WPF,TreeViewItem,如何根据依赖项 属性 不显示 contextMenu?
WPF, TreeViewItem, how to not show contextMenu according to dependency property?
我有一个使用以下样式的树视图:
<HierarchicalDataTemplate x:Key="itemTemplate" DataType="{x:Type AttCatalog:AttachmentCatalogModel}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" Tag="{Binding Guid}">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="New Item"/>
<MenuItem Header="Move to..." />
<MenuItem Header="Delete" />
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
<TreeView x:Name="tree" HorizontalAlignment="Left" Width="216" BorderThickness="0,0,1,0" Background="#FFFBFBFB" IsEnabled="{Binding IsEnabled}" ItemsSource="{Binding Catalogs}" ItemTemplate="{StaticResource itemTemplate}" TreeViewItem.Expanded="OnExpandItemHandler" Margin="0,0,0,241" SelectedItemChanged="tree_SelectedItemChanged">
您可以看到 TextBlock 标签绑定了一个 Guid 属性,我的问题是,当这个 Guid 为空 (00000-00000000-00000),不显示上下文菜单时如何做到这一点?
在上下文菜单中,将可见性绑定到 Guid,并用转换器处理它 =>
<ContextMenu Visibility="{Binding Element=Guid,
Converter={StaticResource GuidToVisibilityConverter}}">
<MenuItem Header="New Item"/>
<MenuItem Header="Move to..." />
<MenuItem Header="Delete" />
</ContextMenu>
在您的转换器中,您可以按照自己的方式处理 Guid 值,即 return Visibility.Visible 或 Visibility.Hidden,具体取决于值。
您可以找到有关转换器的更多信息here.
希望对您有所帮助!
我有一个使用以下样式的树视图:
<HierarchicalDataTemplate x:Key="itemTemplate" DataType="{x:Type AttCatalog:AttachmentCatalogModel}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" Tag="{Binding Guid}">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="New Item"/>
<MenuItem Header="Move to..." />
<MenuItem Header="Delete" />
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
<TreeView x:Name="tree" HorizontalAlignment="Left" Width="216" BorderThickness="0,0,1,0" Background="#FFFBFBFB" IsEnabled="{Binding IsEnabled}" ItemsSource="{Binding Catalogs}" ItemTemplate="{StaticResource itemTemplate}" TreeViewItem.Expanded="OnExpandItemHandler" Margin="0,0,0,241" SelectedItemChanged="tree_SelectedItemChanged">
您可以看到 TextBlock 标签绑定了一个 Guid 属性,我的问题是,当这个 Guid 为空 (00000-00000000-00000),不显示上下文菜单时如何做到这一点?
在上下文菜单中,将可见性绑定到 Guid,并用转换器处理它 =>
<ContextMenu Visibility="{Binding Element=Guid,
Converter={StaticResource GuidToVisibilityConverter}}">
<MenuItem Header="New Item"/>
<MenuItem Header="Move to..." />
<MenuItem Header="Delete" />
</ContextMenu>
在您的转换器中,您可以按照自己的方式处理 Guid 值,即 return Visibility.Visible 或 Visibility.Hidden,具体取决于值。
您可以找到有关转换器的更多信息here.
希望对您有所帮助!