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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top