C# WPF ContextMenu将某些属性绑定到同一控件的另一个属性
我在Window.Resource部分中定义了一个ContextMenu和一个ColumnHeaderStyle,我将其用于DataGrid ColumnHeader。我的代码是这样的:C# WPF ContextMenu将某些属性绑定到同一控件的另一个属性,c#,wpf,contextmenu,bind,visibility,C#,Wpf,Contextmenu,Bind,Visibility,我在Window.Resource部分中定义了一个ContextMenu和一个ColumnHeaderStyle,我将其用于DataGrid ColumnHeader。我的代码是这样的: <ContextMenu x:Key="cm_columnHeaderMenu"/> <Style x:Key="DefaultColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}"> <Setter P
<ContextMenu x:Key="cm_columnHeaderMenu"/>
<Style x:Key="DefaultColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContextMenu" Value="{StaticResource cm_columnHeaderMenu}" />
</Style>
<DataGrid Grid.Column="2" Grid.Row="1" x:Name="dgridFiles" IsReadOnly="True"
ColumnHeaderStyle="{StaticResource DefaultColumnHeaderStyle}">
我想知道我是否可以(如果答案是真的,那么我该如何做)将ContextMenu可见性属性绑定到同一控件ContextMenu项。计数>0属性
最初基于其他一些treeView控件的选择,上下文菜单中不应该有任何项,但我希望根据treeView中的选择在上下文菜单中添加一些项。这一部分完成后,上下文中有这些项。在某些选项上没有项目,但在网格上仍然显示一个空的上下文菜单。所以我认为最简单的部分是将可见性绑定到同一控件的Items.Count属性
抱歉,如果我的英语不够好,如果我第一次没有讲清楚,我会尽量解释得更好。尝试使用转换器将项目计数的值转换为布尔值。所以你最终会得到这样的结果
<ContextMenu Visibility={Binding RelativeSource={RelativeSource Self},
Converter={StaticResource ItemsToVisibilityConverter}, Path=Items.Count}} />
如果这不起作用,请尝试使用数据触发器(您仍然需要转换器,这显示转换器正在工作):
您想通过
相对资源
进行绑定,尤其是自我
模式。我认为通过阅读或阅读,你将能够实现你的目标
然后需要一个绑定转换器将整数值转换为
Visibility
属性的匹配类型和值。你会发现一个简短的教程
关于使用此选项,您可以绑定到同一控件中的属性
Visibility="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}"
你还必须使用转换器来实现你想要的
顺便说一下,
项目计数必须转换为可见性
枚举