2015-02-11 58 views
2

我想显示/隐藏旁边一个ContextMenu的菜单项的报头中的小对勾: Contextmenu menu itemsWPF/XAML样式的TargetType =“菜单项”不工作

我如何管理它通过<Style TargetType="MenuItem">。不知何故,它不工作,我不知道为什么.-。

这里是我的代码:

<Window.Resources> 
    <Style TargetType="MenuItem"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Duplicate}" Value="True"> 
       <Setter Property="IsChecked" Value="True"/> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding Done}" Value="True"> 
       <Setter Property="IsChecked" Value="True"/> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

<!--....--> 

<DataGrid Name="MainDataGrid" IsReadOnly="True" SelectionMode="Single"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Date" Binding="{Binding Date"></DataGridTextColumn> 
     <!-- .... --> 
    </DataGrid.Columns> 
    <DataGrid.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Done" .../> 
      <MenuItem Header="Duplicate" .../> 
     </ContextMenu> 
    </DataGrid.ContextMenu> 
</DataGrid> 

我在做什么错?

+0

你确定文本菜单的DataContext的设置正确?它应该自动从DataGrid继承,但DataContext对象应具有'Duplicate'和'Done'属性。 – Clemens 2015-02-11 15:09:30

+0

我对此不太确定,但我也尽管它会自动继承。 – 2015-02-11 15:12:39

+0

在调试器中运行应用程序时,您是否在Visual Studo Output窗口中看到任何绑定错误消息,并且您在DataGrid上打开了上下文菜单? – Clemens 2015-02-11 16:30:10

回答

1

我相信你错过了IsCheckable =“真”<MenuItem Header="Done" IsCheckable="True" .../>

+0

它仍然不起作用 – 2015-02-11 15:48:04

+1

好了,试试这个:删除你的块,并直接在你的Style中添加。你的MenuItems现在被检查了吗? – SuperOli 2015-02-12 15:13:05

+0

是的,它终于有效! – 2015-02-13 17:29:30