Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
.net 以编程方式禁用/启用WPF上下文菜单项_.net_Wpf_Contextmenu - Fatal编程技术网

.net 以编程方式禁用/启用WPF上下文菜单项

.net 以编程方式禁用/启用WPF上下文菜单项,.net,wpf,contextmenu,.net,Wpf,Contextmenu,当上下文菜单中有分隔符时,如何以编程方式修改特定的上下文菜单菜单项 在父控件中,我有 ContextMenuOpening="ModifyItems" 上下文菜单是 <ContextMenu > <MenuItem Header="Item1" Tag="SomeTag" /> <Separator /> <MenuItem Header="Item2" />

上下文菜单中有
分隔符时,如何以编程方式修改特定的
上下文菜单
菜单项

在父控件中,我有

ContextMenuOpening="ModifyItems"
上下文菜单是

<ContextMenu >
    <MenuItem Header="Item1" Tag="SomeTag" />
    <Separator />
    <MenuItem Header="Item2" />                                                     
</ContextMenu>
我遇到了一个例外:

无法将“System.Windows.Controls.Separator”类型的对象强制转换为“System.Windows.Controls.MenuItem”类型


如何解决此问题?

您需要检查该项是否为
菜单项:

For Each i In cm.Items
    If TypeOf i Is MenuItem Then
        Dim mi = CType(i, MenuItem)
        If CType(mi.Tag, String) = "SomeTag" Then
            mi.IsEnabled = IsEnabled()
        End If
    End If
Next mi
For Each i In cm.Items
    If TypeOf i Is MenuItem Then
        Dim mi = CType(i, MenuItem)
        If CType(mi.Tag, String) = "SomeTag" Then
            mi.IsEnabled = IsEnabled()
        End If
    End If
Next mi