Как сделать событие для макета (кроме некоторых элементов) в SilverLight или Windows Phone - PullRequest
0 голосов
/ 06 марта 2012

У меня есть форма с двумя текстовыми полями, какое событие и как я могу использовать, чтобы получить действие, когда я нажимаю Макет, кроме этих текстовых полей?Поэтому, когда я нажимаю на текстовые поля, это событие не должно работать.Это должно работать, когда я нажимаю на другие части макета, кроме текстовых полей, которые у меня есть на форме

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

Вы можете установить MouseLeftButtonUp-событие в главной сетке на своей странице. Примерно так:

<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">

И событие выглядит так:

private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    //Do something
}

Я проверил это на странице с двумя текстовыми полями и флажком, и это работает. Везде, где я нажимаю, кроме TextBox и CheckBox, событие вызывается. Надеюсь, это поможет!

2 голосов
/ 06 марта 2012

Я сделал что-то похожее на это. В коде позади я использовал это:

layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) =>
                {
                    //In this case, don't focus.
                    if (RecieveFocus != null && 
                        e.OriginalSource is Textbox &&
                        ((e.OriginalSource as Textbox).Tag == "DONT FOCUS")
                    {
                        //do nothing, or whatever you want
                    }
                    else if(RecieveFocus != null)
                        RecieveFocus(this, new EventArgs());                            
                }), true);

Вы можете проверить, является ли ваш исходный текст текстовым полем, и если это так, не делайте того, что вы хотите сделать иначе. Последнее логическое значение true для Add Handler говорит об обработке событий, помеченных как уже обработанные.

Я сделал событие под названием RecieveFocus, которое я обрабатываю и вызываю, даже если что-то щелкнуло в корне моего макета, за исключением (в данном случае) текстового поля с тегом «DONT FOCUS»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...