在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实现该功能的相同结果。有没有一种简单的方法可以做到这一点?
答案 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。