XAML为什么TreeViewItem的MouseDoubleClick事件每双击多次引发?
<TreeView Name="GroupView" ItemsSource="{Binding Documents}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="OnTreeNodeDoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
....
</TreeView>
代码隐藏
private void OnTreeNodeDoubleClick(object sender, MouseButtonEventArgs mouseEvtArgs)
{
Console.WriteLine("{3} MouseDoubleClick Clicks={0} ChangedButton={1} Source={2} Handled={4} ButtonState={5}",
mouseEvtArgs.ClickCount, mouseEvtArgs.ChangedButton, mouseEvtArgs.OriginalSource,
mouseEvtArgs.Timestamp, mouseEvtArgs.Handled, mouseEvtArgs.ButtonState);
}
我发现一个双击,事件处理程序被调用多次。我试图打开一个文件在选项卡上双击相应的树节点;所以我需要过滤掉额外的电话。
23479156 MouseDoubleClick Clicks=1 ChangedButton=Left Source=System.Windows.Controls.TextBlock Handled=False ButtonState=Pressed
23479156 MouseDoubleClick Clicks=1 ChangedButton=Left Source=System.Windows.Controls.TextBlock Handled=False ButtonState=Pressed
在我这个稍微复杂的应用程序中,每双击一次就会产生4次。在一个简单的repro-app上,它每双击两次就会被提升。而且所有的事件参数参数也是一样的,所以我不能区分一组中的最后一个。
任何想法,为什么这是现在这个样子?
您是否在UpdatePanel中使用了treeview? – Kangkan 2010-02-17 11:22:48
@Kangkan:不,这不是一个网络应用程序;一个简单的桌面应用。 – Gishu 2010-02-17 11:58:37
我曾经有过同样的问题,从来没有想过它。我在treeview(而不是treeviewitems)上安装了doubleclick事件处理程序,并使用了selecteditem属性... – 2011-04-01 23:17:07