隐藏WPF网格中的列

时间:2013-03-13 21:45:20

标签: wpf gridview grid contextmenu

我有这样的网格:

<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>

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

我希望有一个鼠标右键菜单(contextmenu)来隐藏/删除列。

要隐藏该列,我需要做什么?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:-1)

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

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

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

对于删除,Grid.ColumnDefinitions的RemoveAt方法删除给定位置的列。

DynamicGrid.ColumnDefinitions.RemoveAt(3);

Grid.ColumnDefinitions的Clear方法删除网格中的所有列。

DynamicGrid.ColumnDefinitions.Clear();