如何禁用contextmenu项目?

时间:2016-08-13 08:56:41

标签: c# wpf

在WPF中,我有这个代码用于在某种条件下禁用menuitem:

private void gridListPlayers_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    Player player = (Player)gridListPlayers.SelectedItem;

    if(player.Owner.GUID == Guid.Empty.ToString())
    {
        propMenuItem.IsEnabled = false;
    }
    else
    {
        propMenuItem.IsEnabled = true;
    }
}

我试图通过XAML实现该功能的相同结果。有没有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以根据所选项目中的属性设置可见性。因此,创建只读属性ToggleMenuVisible,它返回(Owner.GUID!= Guid.Empty.ToString()),然后在你的xaml中做类似的事情:

<MenuItem x:Name="MyToggleMenu"  Header="My Toggle Menu" >
    <MenuItem.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem.ToggleMenuVisible}" Value="False">
                    <Setter Property="UIElement.Visibility" Value="Collapsed" />
                </DataTrigger>
                <DataTrigger Binding="{Binding SelectedItem.ToggleMenuVisible}" Value="True">
                    <Setter Property="UIElement.Visibility" Value="Visible" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </MenuItem.Style>
</MenuItem>

显然,您需要在视图的模型中包含SelectedItem。