【问题标题】:How do I dynamically change Header's DataGrid TextColumn?如何动态更改标题 DataGridTextColumn?
【发布时间】:2011-09-21 14:50:22
【问题描述】:

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

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

    请记住,这是我需要更改的几个示例之一。 谢谢。

    【问题讨论】:

      标签: wpf datagrid header staticresource


      【解决方案1】:

      这可以通过数据绑定轻松完成。

      代码隐藏方式

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

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

      MVVM 方式

      执行与上述相同的操作,除了将属性放在数据网格绑定到的视图模型上。将 XAML 更改为:

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

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

      【讨论】:

      • 感谢您的回答。我做了睾丸,但它不起作用,当我将绑定设置到标题中时,标题返回 null,一个白色字段。我已经实现了 INotifyPropertyChanged。我在这个项目中使用 Page 而不是 Window。还有其他建议吗?提前致谢。
      • 您的页面是否命名为“Page”?在上面绑定的 ElementaName 部分中,确保该值与根标记(页面)中 x:Name 中的值相同。另外,请记住,如果你不给属性一个初始值,它将在标题中是一个空字符串...
      • 我正在使用对象类型页面 (WPF)。我的页面名称是 pgFornos。在这种情况下,我使用了: MyTest 属性具有初始值。即使在这种情况下,标题也不会改变。它总是空白的。
      • MyTest 属性与 CounterDtm 属性在同一个 ViewModel 中?您的输出窗口中是否出现任何绑定错误?
      • 所有这两个属性都在 ViewModel 中。 CounterDtm 的值已正确更新并呈现在 Grid 中。该属性具有 MyTest 希望显示的值。只有标题不显示任何值。正如我所说,我没有收到任何错误,所有属性都有值。再次感谢。
      猜你喜欢
      • 1970-01-01
      • 2010-09-29
      • 2014-04-16
      • 2016-08-21
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多