为 StackPanel 中包含的静态按钮的“单击”事件绑定 RoutedEvent 很容易。RoutedEventArgs 将包含按钮作为事件的e.Source。
XAML:
<StackPanel Grid.Column="1" Button.Click="RoutedEventHandler">
<Button Name="btn1" Content="btn1" />
<Button Name="btn2" Content="btn2" />
</StackPanel>
代码背后:
private void RoutedEventHandler(object sender, RoutedEventArgs e)
{
MessageBox.Show(((FrameworkElement)e.Source).Name);
}
但是 - 使用“ListViewItem.MouseDoubleClick”处理路由事件将导致e.Source中的 ListView 容器对象,而不是预期的 ListViewItem 对象。
XAML:
<ListView Name="lbAnecdotes"
ListViewItem.MouseDoubleClick="RoutedEventHandler">
<ListView.ItemTemplate >
<DataTemplate>
<WrapPanel >
<TextBlock Text="{Binding Path=Name}" />
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView >
你能解释不一致的地方吗?