【发布时间】:2017-01-11 08:40:44
【问题描述】:
我想获得column Index 并通过CommandParameter 传递它,我在context menu 中为Data grid column header。
<DataGrid.Resources>
<ContextMenu x:Key="DataGridColumnHeaderContextMenu">
<MenuItem Header="Freez Column"
Command="{Binding DataContext.FreezColumnCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
CommandParameter="{Binding}" />
</ContextMenu>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContextMenu" Value="{StaticResource DataGridColumnHeaderContextMenu}" />
</Style>
</DataGrid.Resources>
我尝试通过在CommandParameter 中传递Binding 来传递整个对象,但它只传递了标题文本。
并尝试使用RelateveSource AncestorType=DataGridColumn 仍然无法弄清楚。
编辑:
数据网格代码:
<DataGrid ItemsSource="{Binding MyList}" HorizontalScrollBarVisibility="Visible" CanUserAddRows="False" AutoGenerateColumns="False">
<DataGrid.Resources>
<ContextMenu x:Key="DataGridColumnHeaderContextMenu">
<MenuItem Header="Freez Column"
Command="{Binding DataContext.FreezColumnCommand, RelativeSource={RelativeSource AncestorType=DataGrid}}"
CommandParameter="{Binding}" />
</ContextMenu>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContextMenu" Value="{StaticResource DataGridColumnHeaderContextMenu}" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Story" Binding="{Binding Story}" />
<DataGridCheckBoxColumn Header="Design" Binding="{Binding Design}" />
<DataGridTextColumn Header="CadId" Binding="{Binding CadId}" />
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
你的数据网格和列也绑定了什么?
标签: c# wpf mvvm datagrid datagridcolumnheader