GotFocus扩散到所有对象图上

时间:2013-01-30 17:05:51

标签: c# .net silverlight silverlight-4.0

我在Silverlight上有一个有文本框的页面,我需要在文本框上处理GotFocus事件,但问题是这个特定事件在所有对象图上展开,所以当任何其他对象抛出一个GotFocus事件时我想要处理的文本框的GotFocus也是

1 个答案:

答案 0 :(得分:1)

GotFocus是一个路由事件,这意味着它将在Visual Tree中向上运行,直到将其标记为已处理。

您正在描述事件类型所期望的内容。

如果事件继续“冒泡”,会产生一些不良副作用。您可以将事件标记为已处理以阻止它。

您还可以检查事件的OriginalSource属性,以查看事件是否来自TextBox。

void OnGotFocus(object sender, RoutedEventArgs e)
{ 
    var myTextBox = e.OriginalSource as TextBox;
    if(myTextBox != null && myTextBox.Name == "MyTextBoxName")
    {
        e.Handled = true;
    }
}