WPF - 在ColumnHeader的displayIndex上触发大于值

时间:2017-11-17 06:58:26

标签: c# wpf mvvm triggers datagrid

我正在寻找在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>

有没有办法做到这一点?我需要这个的原因是用户会动态添加列,因此他需要(有时)删除它们。

1 个答案:

答案 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;
        }

想知道是否有更好的方法来解决这个问题;)