我想使用使用参数的转换器设置列的标题。转换器的值必须是数据网格的ItemsSource。
我知道要修改标题的文本,我需要设置文本块的Text属性。
使用此代码,我可以在视图的视图模型中使用属性来设置标题:
<DataGridTextColumn Binding="{Binding MyProperty}" Width="2.8cm">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.MyPropertyInViewModel,
RelativeSource={RelativeSource AncestorType={x:Type local:MyView}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
但是我更喜欢使用转换器。但是我不知道如何在列标题的文本块内使用转换器。该转换器需要获取作为数据网格源的对象作为值。
谢谢。
答案 0 :(得分:1)
通过将DataGrid
指定为ItemsSource
,可以获得RelativeSource
的{{1}}。
尝试一下
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=ItemsSource,
RelativeSource={RelativeSource AncestorType=DataGrid,
Mode=FindAncestor},
Converter={StaticResource ValueConverter}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>