我有这样的网格:
<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)来隐藏/删除列。
要隐藏该列,我需要做什么?
答案 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();