如何获取菜单项命令 CanExecute 在使用图像和文本时应用

How to get menu items command CanExecute to apply when using images and text

如果我从以下位置转换我的菜单代码:

<MenuItem Header="Remove Special Event" 
          Command="{Binding RemoveSpecialEventCommand, Mode=OneWay}" />

收件人:

<MenuItem Command="{Binding RemoveSpecialEventCommand, Mode=OneWay}">
    <MenuItem.Header>
        <StackPanel Orientation="Horizontal">
            <Image Source="Images/RemoveSpecialEvent.png" Stretch="None" Margin="0,0,5,0"/>
            <TextBlock>Remove Special Event</TextBlock>
        </StackPanel>
    </MenuItem.Header>
</MenuItem>

现在 Command CanExecute 未应用于菜单项。它们都已启用。

更新

I don't particularly expect this to work.

成功了!

我无法重现您的问题,我会相信您的话,它已完全禁用,但不会使文本变灰。我想这可能是一个主题。

您可以尝试一件事:不要给 Header 属性 可视化树片段,而是尝试对纯字符串 header 内容进行模板化。

<MenuItem
    Header="Remove Special Event"
    Command="{Binding RemoveSpecialEventCommand, Mode=OneWay}"
    >
    <MenuItem.HeaderTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image 
                    Source="Images/RemoveSpecialEvent.png" 
                    Stretch="None" 
                    Margin="0,0,5,0"
                    />
                <ContentControl 
                    Content="{Binding}" 
                    />
            </StackPanel>
        </DataTemplate>
    </MenuItem.HeaderTemplate>
</MenuItem>

我并不特别希望它能奏效。