如何使用带参数的转换器在数据网格中设置 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 的值。

谢谢。

您可以将 DataGridItemsSource 指定为 RelativeSource

试试这个

<DataGridTextColumn>
    <DataGridTextColumn.Header>
        <TextBlock Text="{Binding Path=ItemsSource, 
                                  RelativeSource={RelativeSource AncestorType=DataGrid, 
                                                                 Mode=FindAncestor}, 
                                  Converter={StaticResource ValueConverter}}"/>
    </DataGridTextColumn.Header>
</DataGridTextColumn>