0

假设我有一个 XAML 代码,它有两个带有文本块的对话框。我有一个与其中一个对话框上的文本块相关联的事件。我可以以这种方式对另一个对话框上的另一个文本块重复使用相同的事件,以便它处理这两个元素吗?我不想创建另一个事件,从现有事件中复制粘贴代码,只是重命名那里的控件或将常用功能分解为接受文本块对象的函数。这就是我梦想的布局:

编辑:包括额外的文本块并添加到事件评论中

<XamDialogWindow> 
 <TextBlock Name="ctrl1" KeyUp="keyUp_event" />
 <TextBlock Name="ctrl2" />
 ...
</XamDialogWindow>

<XamDialogWindow> 
 <TextBlock Name="ctrl3" KeyUp="keyUp_event" />
 <TextBlock Name="ctrl4" />
 ...
</XamDialogWindow>

private void keyUp_event(object o, KeyEventArgs a){ //Just one event
  //copy from one control to the other
  //For eg, if event raised from ctrl1 then copy from ctrl1 to ctrl2
}

这可能吗?

4

2 回答 2

1

在 XAML 中,您根本不需要命名控件。

所以两个控件都会很高兴地触发同一个处理程序

但是您可能会发现将事件放在 XamDialogWindow 而不是文本框上可以为您简化问题,因为您可以检查事件跟踪以查找事件源,然后参考 XamDialogWindow 的子项以找到其他控件

请参阅http://msdn.microsoft.com/en-us/library/system.windows.input.keyeventargs.aspx中的 OriginalSource

于 2013-06-10T15:13:18.777 回答
0

是的,您可以直接为两个控件调用相同的事件处理程序。也不需要给控件命名。

在后面的代码中,如果您需要哪个控件触发了事件,您可以这样做

String name=((TextBlock)sender).name;
if(name=="ctrl1")
    {// do something here}
else
    {//do some other here}
于 2013-06-13T11:28:30.893 回答