gpt4 book ai didi

wpf - 如何根据条件隐藏wpf xaml中上下文菜单的菜单项

转载 作者:行者123 更新时间:2023-12-03 10:14:55 26 4
gpt4 key购买 nike

在我的 xaml 中,我使用 wpf ContextMenu 来显示 wpf datagid 中的菜单项。我需要根据条件隐藏菜单项。我尝试了以下但它不工作。

<ContextMenu x:Key="contextMenuTextCell">


<MenuItem Name="copyDealContextMenu"
Header="Copy Deal"
Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, Path=DataContext.CopyDeal}"
CommandParameter="{Binding}">

<Style TargetType="{x:Type MenuItem}">
<Setter Property="Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{ Binding ElementName= BlotGrid,Path=DataContext.ProductType }" Value="FXO">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>

</MenuItem>

</ContextMenu>

如何隐藏上下文菜单中的菜单项?

谢谢

最佳答案

这有两个原因不起作用。

1) 是 ContextMenu 与为其设置的元素不在同一个 VisualTree 中(即它是 PlacementTarget)。您将无法使用 绑定(bind)到元素元素名称 .

2)你把你的风格当作是菜单项的内容。 (起初我也没有注意到它..)。它需要设置为 MenuItem 的 DependencyProperty 'Style'。

<Grid x:Name="BlotGrid" Background="Red">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Name="copyDealContextMenu"
Header="Copy Deal"
CommandParameter="{Binding}">
<MenuItem.Style>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu},Path=PlacementTarget.DataContext.IsXXX}" Value="True">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>

关于wpf - 如何根据条件隐藏wpf xaml中上下文菜单的菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308846/

26 4 0