我有一个 DataGrid 的 ContextMenu ,它显示具有属性的项目Deleted
。ContextMenu 中的项目之一需要删除,但您也可以取消删除项目(项目保留在列表中,但如果要被删除,则具有红色背景)。
目前我有这个:
<Style x:Key="DeleteMenuItemStyle" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Deleted}" Value="true">
<Setter Property="Header" Value="Undelete"/>
</DataTrigger>
<DataTrigger Binding="{Binding Deleted}" Value="false">
<Setter Property="Header" Value="Delete"/>
</DataTrigger>
</Style.Triggers>
</Style>
但是我不确定如何切换项目上的 Deleted 属性,目前我只能删除项目,并且该项目的 Click 事件处理程序是:
private void mnuDelete_Click(object sender, RoutedEventArgs e)
{
DatabaseIndex index = (DatabaseIndex)((MenuItem)sender).DataContext;
index.Deleted = true;
}
因此,无论菜单项是删除还是取消删除,已删除属性都设置为 true atm。我可以检查发件人的文本是什么,然后根据它设置真或假,但这对我来说似乎完全错误,好像我更改文本“删除”和“取消删除”我必须更改代码。
我可以在样式中使用 EventSetter 并具有两个不同的事件处理程序,但它们彼此相同,除了 true 和 false。
这样做的最佳方法是什么?有没有办法喜欢“将 Click 事件绑定到 Deleted 属性”?