wpf TreeViewItem
-
21-09-2019 - |
Frage
Ich schaffe eine TreeView
der folgenden Methode durch ein XML-Dokument Looping.
Wenn sie jedoch jede TreeViewItem
ausgewählt wird, um alle Knoten in der Hierarchie werden immer die Ereignis-Triggern statt nur den ausgewählten TreeViewItem
.
Zum Beispiel lassen Sie uns sagen, dass wir das Enkelkind eines Knotens aus. Alle Knoten einschließlich Enkelkind, Kind, Eltern auslösen das gleiche Ereignis.
Mit anderen Worten würden wir nur die Enkel Auslöser das zugehörige Ereignis erwarten, während und das Ereignis nur einmal aufgerufen werden, aber es endet 3-mal für alle die Knoten der Hierarchie des ausgewählten Elements aufgerufen wird.
Hier ist der Code:
TreeViewItem getTreeViewItemWithHeader(XmlNode node)
{
TreeViewItem tvi = new TreeViewItem();
tvi.Header = node.Name;//hdr;
tvi.Tag = node.Attributes["Tag"].Value;
tvi.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(tvi_PreviewMouseLeftButtonDown);
tvi.Selected += new RoutedEventHandler(tvi_Selected);
return tvi;
}
Bitte lassen Sie mich wissen, wenn Sie irgendwelche Vorschläge haben, dank
N
Lösung
Das funktioniert richtig. Die PreviewMouseLeftButtonDown
Veranstaltung ist ein Routingereignis (in diesem Fall die Strategie Tunnelbau). Dies bedeutet, dass die Wurzel des visuellen Struktur zuerst das Ereignis bekommt, und es bahnt sich seinen Weg nach unten, bis er die Kontrolle erreicht, dass das Ereignis ursprünglich ausgelöst. Die MouseLeftButtonDown
und Selected
Ereignisse auch geleitet werden, aber seine Strategie sprudelt -. Dies bedeutet, dass das Ereignis seinen Weg bis die visuellen Struktur arbeitet, mit der Kontrolle beginnen, die das Ereignis ausgelöst hat
Wenn Sie ein Routingereignis nicht weiter gesendet werden, stellen Sie die Handled
Eigenschaft des RoutedEventArgs
in zu true
weitergegeben.