我正在寻找在datagrid上进行触发的方法,当点击标题时显示上下文菜单,标题的DisplayIndex大于2。
这就是我现在所拥有的:
<Style TargetType="{x:Type DataGridColumnHeader}">
<Style.Triggers>
<Trigger Property="DisplayIndex" Value="2">
<Setter Property="ContextMenu"
Value="{StaticResource ColumnHeaderContextMenu1}" />
</Trigger>
</Style.Triggers>
</Style>
有没有办法做到这一点?我需要这个的原因是用户会动态添加列,因此他需要(有时)删除它们。
答案 0 :(得分:0)
以其他方式处理此问题。代码可能很有用:
XAML:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<EventSetter Event="MouseRightButtonDown" Handler="DataGridColumnHeader_MouseRightButtonDown" />
</Style>
</DataGrid.ColumnHeaderStyle>
代码背后:
private void DataGridColumnHeader_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
if (((DataGridColumnHeader)sender).DisplayIndex < 2)
{
return;
}
var x = DataContext as BrygadzistaViewModel;
x.ColumnHeaderToDelete = ((DataGridColumnHeader)sender).Content.ToString();
ContextMenu cm = new ContextMenu();
MenuItem mi = new MenuItem();
mi.Header = "Usuń";
mi.Command = x.DeleteDay;
cm.Items.Add(mi);
cm.IsOpen = true;
}
想知道是否有更好的方法来解决这个问题;)