当绑定的视图模型为空时禁用菜单项

Disable menuitem when binded viewmodel is null

所以我有一个绑定到 ActiveDocument 的 MenuItem

<MenuItem Header="Save File" Command="{Binding ActiveDocument.SaveCommand}"/>

Enable/Disable 由 ViewModel 设置:

private bool CanSave(object parameter)
{
    return IsDirty;
}

当我没有 ActiveDocument 时,如何将 MenuItem 默认设置为禁用?

您可以使用带有触发器的 Style,只要 CommandMenuItemIsEnabled 属性 设置为 false 属性 returns 一个 null 参考:

<MenuItem Header="Save File" Command="{Binding ActiveDocument.SaveCommand}">
    <MenuItem.Style>
        <Style TargetType="MenuItem">
            <Style.Triggers>
                <Trigger Property="Command" Value="{x:Null}">
                    <Setter Property="IsEnabled" Value="False" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </MenuItem.Style>
</MenuItem>