我有MenuItem List并使用像剪切,复制,粘贴这样的ApplicationCommnds。我希望在Command被禁用时做一些事情。但是样式不能正常工作.ApplicationCommand的默认行为是ii如果禁用它会自动设置foregroud灰色但它不适用于我的情况。所以我明确地尝试设置它。
<TextBox x:Name="AssignmentTextBox" >
<TextBox.ContextMenu>
<ContextMenu Background="White">
<MenuItem Command="ApplicationCommands.Undo" Style="StaticResource _MenuItem}"/>
<Separator />
<MenuItem Command="ApplicationCommands.Cut" Style="{StaticResource _MenuItem}"/>
<MenuItem Command="ApplicationCommands.Copy" Style="{StaticResource _MenuItem}" />
<MenuItem Command="ApplicationCommands.Paste" Style="{StaticResource _MenuItem}"/>
<Separator />
<MenuItem Command="ApplicationCommands.SelectAll" Style="{StaticResource _MenuItem}"/>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
答案 0 :(得分:1)
知道了。在为第一个MenuItem设置Style属性值时,您错过了一个括号 {。
什么是错误的
<MenuItem Command="ApplicationCommands.Undo" Style="StaticResource _MenuItem}"/>
什么是正确的
<MenuItem Command="ApplicationCommands.Undo" Style="{StaticResource _MenuItem}"/>
[已编辑] 在下面的测试用例中,启用的MenuItems将为绿色,禁用的MenuItems将为红色。希望这有助于您解决问题
<ContextMenu Background="White">
<ContextMenu.Resources>
<Style x:Key="_MenuItem1" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsEnabled}" Value="false">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsEnabled}" Value="True">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContextMenu.Resources>
<MenuItem Command="ApplicationCommands.Undo" Style="{StaticResource _MenuItem1}"/>
<Separator />
<MenuItem Command="ApplicationCommands.Cut" Style="{StaticResource _MenuItem1}"/>
<MenuItem Command="ApplicationCommands.Copy" Style="{StaticResource _MenuItem1}" />
<MenuItem Command="ApplicationCommands.Paste" Style="{StaticResource _MenuItem1}"/>
<Separator />
<MenuItem Command="ApplicationCommands.SelectAll" Style="{StaticResource _MenuItem1}"/>
</ContextMenu>
<强>截图强>
答案 1 :(得分:0)
似乎您更改了MenuItem模板或覆盖了前景,因此CommandCan执行无法更新正确的可视元素以呈现为“禁用”,这应该是灰色。
所以我想知道你是否可以用键_MenuItem向我们展示模板或你的风格,也许我们可以告诉你的情况有什么问题。