[英]Toggle MenuItem in c#
我有一个用于显示显示属性为Deleted
项目的DataGrid ContextMenu。 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。 我可以检查发件人的文本是什么,然后根据此设置为true或false,但这对我来说似乎是完全错误的,好像我更改了文本“ Delete”和“ Undelete”一样,我必须更改代码。
我可以使用这种风格的EventSetter并具有两个不同的事件处理程序,但是除了true和false之外,它们彼此相同。
最好的方法是什么? 有什么办法喜欢“将Click事件绑定到Deleted属性”吗?
为什么不检查Deleted
属性本身呢?
private void mnuDelete_Click(object sender, RoutedEventArgs e)
{
DatabaseIndex index = (DatabaseIndex)((MenuItem)sender).DataContext;
if (index.Deleted)
{
index.Deleted = false;
// code to undelete
}
else
{
index.Deleted = true;
// code to delete
}
}
或者,如果您只想切换Deleted
属性:
index.Deleted = !index.Deleted;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.