0

我有一个这样的网格:

<Grid Name="mainPane">
    <Grid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Hide" Click="MenuItemHide_Click" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Parent}"></MenuItem>
        </ContextMenu>
    </Grid.ContextMenu>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>            
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions >
        <RowDefinition Height="576*"/>
    </Grid.RowDefinitions>

    <GridView x:Name="permitsCol">
        <GridViewColumn x:Name="colPermitSeq" Header="Permit Seq">
        </GridViewColumn>
    </GridView>
</Grid>

我有一个网格,我已经声明了一列。我在运行时添加了更多列。

我想要一个鼠标右键菜单(上下文菜单)来隐藏/删除一列。

我需要做什么才能隐藏该列?

4

2 回答 2

0

嗨,尝试将此绑定到 DataGrid 的 ColumnHeaderStyle

<Style x:Key="DefaultColumnStyle" TargetType="{x:Type DataGridColumnHeader}">
  <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" />
</Style>

<ContextMenu  x:Key="RowMenu" DataContext="{Binding PlacementTarget.DataContext,RelativeSource={RelativeSource Self}}">
   <MenuItem Header="Hide" Click="MenuItemHide_Click" CommandParameter="{Binding RelativeSource={RelativeSource Self}}">
   </MenuItem>
</ContextMenu>
于 2013-03-14T07:02:59.527 回答
-1

例如,如果要隐藏列,colPermitSeq可以使用:

colPermitSeq.Visibility = System.Windows.Visibility.Hidden;

Collapse如果这样更方便,您也可以将其设置为。

至于删除,RemoveAtGrid.ColumnDefinitions 方法在给定位置删除一列。

DynamicGrid.ColumnDefinitions.RemoveAt(3);

Grid.ColumnDefinitionsClear方法删除 Grid 中的所有列。

DynamicGrid.ColumnDefinitions.Clear();
于 2013-03-14T10:32:05.503 回答