我有一个 DataGrid,在那个网格中,一些列被标记为只读:
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<!-- this column is read only -->
<DataGridTextColumn Header="Column A" Binding="{Binding Path=PropertyA}" IsReadOnly="True" />
<!-- this column is EDITABLE -->
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False" />
<!-- this column is read only -->
<DataGridTextColumn Header="Column C" Binding="{Binding Path=PropertyC}" IsReadOnly="True" />
</DataGrid.Columns>
我希望“名称”列可以通过可编辑的标题在视觉上区分,而其他两列则不可编辑。不过,我似乎无法访问 DataGridColumn 的 IsReadOnly 属性。
我正在有效地尝试做类似的事情:
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader" >
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumn}, Path=IsReadOnly}" Value="false">
<Setter Property="Background" Value="Azure" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ColumnHeaderStyle>
从这个问题:
Binding Visible property of a DataGridColumn in WPF DataGrid看来,DataGridColumn 不是框架元素,所以我无法使用RelativeSource AncestorType=DataGridColumn
. 那张海报说他们使用静态资源来找到它,但没有解释什么/如何(还有几个答案是关于海报如何解决它的问题)
这个问题:如何从 DataGridColumn 获取 DataGridColumnHeader?,看起来我可以从代码中得到它,但我真的希望这只是 xaml 和通用的,以适用于任何数据网格。
我忽略了一些简单的事情吗?