[英]Context menu on Treeview does not open on selected item
我有一個帶有上下文菜單的樹視圖,並且正在使用轉換器對其進行管理。 我不希望菜單在項目上打開,而只希望它在節點上打開。
<BooleanToVisibilityConverter x:Key="VisibilityConverter" />
<ContextMenu x:Key="AddNew" Name="PopMnu" Visibility="{Binding IsFolder,Converter={StaticResource VisibilityConverter}}">
<MenuItem Header="New Symbol..." Click="AddSymbolMenu_Click"/>
<MenuItem Header="New Folder..." Click="NewFolderItem_Click"/>
</ContextMenu>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource AddNew}"/>
</Style>
當我右鍵單擊一個項目時,沒有菜單出現,但是現在當我右鍵單擊一個節點時,菜單出現,但是在先前右鍵單擊該項目的位置上。 除非您再次右鍵單擊任何項目,否則菜單不會關閉。 有什么幫助嗎?
正如克里希納(Krishna)的評論所建議的那樣,一種解決方案是為文件夾提供一個視圖模型,為項目提供一個視圖模型。
public class Folder : ViewModelBase { }
public class Item : ViewModelBase { }
然后,您可以為每個定義一個DataTemplate,一個包含一個上下文菜單,另一個不包含。
<TreeView Name="SymbolsTreeView" ItemsSource="{Binding Items}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Folder}" ItemsSource="{Binding Items}">
<Grid Background="Red">
<Grid.ContextMenu>
<ContextMenu>
</ContextMenu>
</Grid.ContextMenu>
<TextBlock Text="{Binding Name}"/>
</Grid>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:Item}" >
<Grid >
<TextBlock Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</TreeView.Resources>
</TreeView>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.