У меня есть 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>
Я хочу, чтобы столбец «Имя» был визуально различим по заголовку, чтобы он был редактируемым,когда два других столбца нет.Однако я не вижу возможности добраться до свойства IsReadOnly объекта DataGridColumn.
Я эффективно пытаюсь сделать что-то вроде:
<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Видимое свойство DataGridColumn в WPF DataGrid . Похоже, что DataGridColumn не является элементом инфраструктуры, поэтому я не могу найти его с помощью RelativeSource AncestorType=DataGridColumn
.На этом плакате написано, что они использовали статический ресурс, чтобы найти его, но не объясняет, что / как (и на несколько ответов есть вопросы о том, как его решил)
Этот вопрос: Как получить DataGridColumnHeaderиз DataGridColumn? , похоже, что я мог бы получить его из кода , но мне бы очень хотелось, чтобы это было просто xaml и универсально для применения к любой сетке данных.
Есть что-то простое, что я пропускаю?