如何使用带参数的转换器在数据网格中设置标题?

时间:2019-04-01 18:01:57

标签: wpf datagrid ivalueconverter

我想使用使用参数的转换器设置列的标题。转换器的值必须是数据网格的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>

但是我更喜欢使用转换器。但是我不知道如何在列标题的文本块内使用转换器。该转换器需要获取作为数据网格源的对象作为值。

谢谢。

1 个答案:

答案 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>