C# 如何在SilverLight或Windows Phone中为布局(某些元素除外)创建事件
我有一个带有两个文本框的表单,当我单击布局时,我可以使用什么事件以及如何获取操作,除了这个文本框?因此,当我点击文本框时,这个事件不应该起作用。当我点击布局的其他部分时,它应该可以工作,除了我在表单上的文本框我做了类似的事情。在后面的代码中,我使用了以下内容:C# 如何在SilverLight或Windows Phone中为布局(某些元素除外)创建事件,c#,wpf,silverlight,windows-phone-7,silverlight-4.0,C#,Wpf,Silverlight,Windows Phone 7,Silverlight 4.0,我有一个带有两个文本框的表单,当我单击布局时,我可以使用什么事件以及如何获取操作,除了这个文本框?因此,当我点击文本框时,这个事件不应该起作用。当我点击布局的其他部分时,它应该可以工作,除了我在表单上的文本框我做了类似的事情。在后面的代码中,我使用了以下内容: layoutRoot.AddHandler(MouseLeftButtonDownEvent, new MouseButtonEventHandler((s, e) => {
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表示要处理标记为已处理的事件
我制作了一个名为ReceiveFocus的事件,我处理并引发了这个事件,即使在我的布局根目录上单击了任何东西,除了(在本例中)带有标记“DONT FOCUS”的文本框,我也做了类似的事情。在后面的代码中,我使用了以下内容:
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表示要处理标记为已处理的事件
我创建了一个名为ReceiveFocus的事件,我处理并引发该事件,即使在我的布局根目录上单击了任何内容,但(在本例中)带有标记“DONT FOCUS”的文本框除外。您可以在页面的主网格上设置MouseLeftButtonUp事件。大概是这样的:
<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">
private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
//Do something
}
我在一个有两个文本框和一个复选框的页面上测试了这一点,这很有效。除了文本框和引发事件的复选框之外,我单击的所有地方。希望这有帮助 您可以在页面的主网格上设置MouseLeftButtonUp事件。大概是这样的:
<Grid x:Name="LayoutRoot" Background="Transparent" MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp">
private void LayoutRoot_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
//Do something
}
我在一个有两个文本框和一个复选框的页面上测试了这一点,这很有效。除了文本框和引发事件的复选框之外,我单击的所有地方。希望这有帮助