如何动态更改Header的DataGrid TextColumn?

时间:2011-09-21 14:50:23

标签: wpf datagrid header staticresource

我正在尝试构建一个DataGrid布局,其中第一列的名称将被动态更改。 如何更改DataGridTextColumn的Header属性呢?我看到一些例子,而不是Header属性连接到StaticResource,但StaticResource是一个固定值,这对我不起作用, 一旦我需要的是几个值。 例:

  • 如果用户选择RadioButton,按小时过滤,标题将为X
  • 如果按日过滤,标题将为Y
  • 如果按月筛选,则标题为Z
  • ...

    记住,这是我需要改变的几个例子之一。 感谢。

    1 个答案:

    答案 0 :(得分:1)

    使用数据绑定可以轻松完成。

    CodeBehind Way

    在窗口的代码隐藏中创建一个属性来保存字符串值;我会称之为TextProp。我将假设您的窗口的元素名称是此示例的“窗口”。在DataGridTextColumn标记中,将Header属性数据绑定到该属性。

    <DataGridTextColumn Header="{Binding TextProp, ElementName=Window}"/>
    

    MVVM Way

    执行与上面相同的操作,只是将属性放在数据网格绑定到的viewmodel上。将XAML更改为:

    <DataGridTextColumn Header="{Binding TextProp}"/>
    

    然后,您所要做的就是以您选择的任何方式更改Property值。要在属性更改时更新值,您需要实现INotifyPropertyChanged(在该帖子的底部检查)。