XAMLWarum wird das MouseDoubleClick-Ereignis von TreeViewItem mehrmals per Doppelklick ausgelöst?
<TreeView Name="GroupView" ItemsSource="{Binding Documents}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="MouseDoubleClick" Handler="OnTreeNodeDoubleClick"/>
</Style>
</TreeView.ItemContainerStyle>
....
</TreeView>
-Code-Behind
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);
}
finde ich, dass für einen Doppelklick, werden die Event-Handler mehrmals aufgerufen. Ich versuche, ein Dokument in der Registerkarte mit einem Doppelklick auf den entsprechenden Baumknoten zu öffnen; also müsste ich die zusätzlichen Anrufe herausfiltern.
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
In meiner etwas komplizierten App wird es 4 Mal pro Doppelklick ausgelöst. Auf einer einfachen Repro-App wird sie zweimal pro Doppelklick erhöht. Auch alle Parameter des Ereignisarguments sind gleich, daher kann ich den letzten Parameter nicht unterscheiden.
Irgendwelche Ideen, warum das so ist?
Verwenden Sie die Strukturansicht in UpdatePanel? – Kangkan
@Kangkan: Nein. Dies ist keine Web-App; eine einfache Desktop-App. – Gishu
Ich hatte das gleiche Problem einmal, habe es nie herausgefunden. Ich habe den doubleclick-Ereignishandler in der Baumansicht installiert (statt in den treeviewitems) und nur die selecteditem-Eigenschaft verwendet ... –