我想用一个使用参数的转换器设置列的标题。转换器的值必须是datagrid的ItemsSource。
我知道要修改标题的文本我需要设置textblock的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>
但是我更喜欢使用转换器。但我不知道如何在列标题的文本块内使用转换器。此转换器需要获取作为datagrid源的对象的值。
谢谢。
您可以通过将DataGrid
指定为ItemsSource
来获得RelativeSource
的<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=ItemsSource,
RelativeSource={RelativeSource AncestorType=DataGrid,
Mode=FindAncestor},
Converter={StaticResource ValueConverter}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
。
试试这个
qazxswpoi