Wie wähle ich in WPF das Treeview-Element unter meinem Cursor mit der rechten Maustaste?
In WPF, wenn ich mit der rechten Maustaste auf ein treeview-item möchte ich es Ausgewählt/Aktiviert, bevor zeigt das Kontext-Menü.
Dies klingt ziemlich einfach, aber die Aufnahme eines hierachicalDataTemplate erschwert die Dinge ein wenig.
Habe ich folgende treeview:
<TreeView
x:Name="trv"
ContextMenu="{StaticResource contextMenu}"
ItemTemplate="{StaticResource treeHierarchicalDataTemplate}"
ItemsSource="{Binding Source={StaticResource meetingItems}}" >
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<EventSetter Event="TreeViewItem.PreviewMouseRightButtonDown" Handler="trv_PreviewMouseRightButtonDown"/>
<Setter Property="IsExpanded" Value="True"></Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Und hier ist mein event-handler...
private void trv_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
TreeViewItem item = sender as TreeViewItem;
if (item != null)
{
item.Focus();
e.Handled = true;
}
}
Hinweis, wie ich eine EventSetter oben. Diese FAST funktioniert. Aber es wählt nur die root-Ebene treeview-Knoten (d.h. das root-parent der Knoten, auf denen ich Rechte Maustaste). Dies kann sein, weil mein hierarchische Daten-Vorlage? Diese Vorlage enthalten kann, die Kinder DES GLEICHEN TYPS.
Hier ist meine hierarchische Daten-Vorlage...
<HierarchicalDataTemplate x:Key="treeHierarchicalDataTemplate"
ItemsSource="{Binding Path=ChildMeetingItems}">
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Red}" Value="True">
<Setter TargetName="img" Property="Image.Source" Value="pack://siteoforigin:,,,/images/bookRed.png"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
<StackPanel
x:Name="treeViewItemPanel"
Background="Transparent"
Orientation="Horizontal">
<Image Width="16" Height="16" x:Name="img" Margin="0,0,4,0" Source="pack://siteoforigin:,,,/images/bookGreen.png"></Image>
<TextBlock Foreground="DarkGray" Text="{Binding DisplayIndex}" Margin="0,0,5,0"></TextBlock>
<TextBlock Text="{Binding Summary}"></TextBlock>
</StackPanel>
</HierarchicalDataTemplate>
Jede Idee, warum nur der root-Knoten anstelle der untergeordneten Knoten ausgewählt sind, wenn ich mit der rechten Maustaste klicken?
InformationsquelleAutor der Frage willem | 2009-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das ist, weil die ItemContainerStyle ist nicht geerbt durch den Kind-Knoten.
Müssen Sie den gleichen EventSetter auf die ItemContainerStyle o Ihr HierarchicalDataTemplate.
InformationsquelleAutor der Antwort Denis Troller
nur Kommentar der
e.Handler=true
von Ihrem event-handler.wie diese:
InformationsquelleAutor der Antwort Shafi
Ich hatte das gleiche problem - konnte nicht die richtige Auswahl im Baum-Element. Und anstatt
PreviewMouseRightButtonDown
Veranstaltung, die ich verwendet dieselbe Falle einerStackPanel
die auch speichert alle notwendigen Daten:Und der event-handler code-behind:
MyTreeViewItem
ist meine eigene Art der Daten;myClicked
jetzt speichert die Daten, die im Zusammenhang mit der angeklickten Baum Element.Hoffe es hilft jemanden wie mir.
InformationsquelleAutor der Antwort lena