如何使用带参数的转换器在数据网格中设置 header?
How to use a converter with parameter to set the header in a datagrid?
我想用使用参数的转换器设置列的 header。转换器的值必须是数据网格的 ItemsSource。
我知道要修改 header 的文本,我需要设置文本块的文本 属性。
使用此代码,我可以在视图的视图模型中使用 属性 来设置 header:
<DataGridTextColumn Binding="{Binding MyProperty}" Width="2.8cm">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.MyPropertyInViewModel,
RelativeSource={RelativeSource AncestorType={x:Type local:MyView}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
不过我更喜欢为此使用转换器。但我不知道如何在列 header 的文本块内使用转换器。此转换器需要获取作为数据网格源的 object 的值。
谢谢。
您可以将 DataGrid
的 ItemsSource
指定为 RelativeSource
。
试试这个
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=ItemsSource,
RelativeSource={RelativeSource AncestorType=DataGrid,
Mode=FindAncestor},
Converter={StaticResource ValueConverter}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
我想用使用参数的转换器设置列的 header。转换器的值必须是数据网格的 ItemsSource。
我知道要修改 header 的文本,我需要设置文本块的文本 属性。
使用此代码,我可以在视图的视图模型中使用 属性 来设置 header:
<DataGridTextColumn Binding="{Binding MyProperty}" Width="2.8cm">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.MyPropertyInViewModel,
RelativeSource={RelativeSource AncestorType={x:Type local:MyView}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
不过我更喜欢为此使用转换器。但我不知道如何在列 header 的文本块内使用转换器。此转换器需要获取作为数据网格源的 object 的值。
谢谢。
您可以将 DataGrid
的 ItemsSource
指定为 RelativeSource
。
试试这个
<DataGridTextColumn>
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=ItemsSource,
RelativeSource={RelativeSource AncestorType=DataGrid,
Mode=FindAncestor},
Converter={StaticResource ValueConverter}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>