C# wpf中的路由事件
一个非常众所周知的事实是,路由事件只在祖先中上下传播,而不是通过所有元素 但一个同样众所周知的事实是,事件处理程序可以连接到两个不同控件的公共父控件中 我的问题是如何,请给我一些建议 我有一个XAML,看起来像C# wpf中的路由事件,c#,wpf,routed-events,C#,Wpf,Routed Events,一个非常众所周知的事实是,路由事件只在祖先中上下传播,而不是通过所有元素 但一个同样众所周知的事实是,事件处理程序可以连接到两个不同控件的公共父控件中 我的问题是如何,请给我一些建议 我有一个XAML,看起来像 <Grid Name="MainGrid"> <Listbox Name="lb1"/> <Grid Name="InnerGrid"> <Listbox Name="lb2"/> </Grid&
<Grid Name="MainGrid">
<Listbox Name="lb1"/>
<Grid Name="InnerGrid">
<Listbox Name="lb2"/>
</Grid>
</Grid>
在“lb1”上定义的鼠标事件处理程序将不会被触发,因为它会在“InnerGrid”下被“掩埋”。我的问题是,如何在“MainGrid”或“lb1”上定义的事件处理程序被触发的其他地方编写一些代码。或者可能是实现这一点的其他技术
非常感谢。我不确定您到底在问什么,但似乎您希望能够接到已处理事件的电话 试试这个: 在构造函数中
InitializeComponent()之后的代码隐藏中,调用
this.AddHandler(RoutedEvent, Delegate, bool);
传入事件(MouseDown
或诸如此类)、要调用的委托(类似于lb1\u MouseDown
),然后传递true
,表示您希望为已处理的事件调用。这可能是一个愚蠢的问题,但为什么您首先要将lb1“掩埋”在内部网格下你的问题绝对有道理。我上面问的问题有点像把长话短说。基本上,1024X768的屏幕不太适合使用,并且有很多这种形式的控件。:)