Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF ContextMenu将某些属性绑定到同一控件的另一个属性_C#_Wpf_Contextmenu_Bind_Visibility - Fatal编程技术网

C# WPF ContextMenu将某些属性绑定到同一控件的另一个属性

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

我在Window.Resource部分中定义了一个ContextMenu和一个ColumnHeaderStyle,我将其用于DataGrid ColumnHeader。我的代码是这样的:

<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}}"
你还必须使用转换器来实现你想要的


顺便说一下,
项目计数必须转换为
可见性
枚举