如何动态更改标题的 DataGrid TextColumn?

发布于 2024-12-05 21:26:58 字数 293 浏览 0 评论 0原文

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

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

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

    I'm trying to build a DataGrid layout where the first column's name will be dinamically changed.
    How can I do, into DataGridTextColumn's Header property, to change that? I've saw some examples than the Header property is connected into a StaticResource, but a StaticResource is a fixed value, and that's doesn't work for me,
    once what I need is several values.
    Example:

  • If a user select a RadioButton, filtering by hour, the header will be X
  • If filters by day, header will be Y
  • If Filters by month, header will be Z
  • ...

    Remembering, this is one of several examples than i would need to change.
    Thanks.

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(1

    七婞 2024-12-12 21:26:58

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

    CodeBehind 方式

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

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

    MVVM 方式

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

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

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

    This can be done easily with Databinding.

    The CodeBehind Way

    Create a property in the codebehind of your window to hold the string value; I will call mine TextProp. I will assume the elementname of your window is "Window" for this example. In the DataGridTextColumn tag, databind the Header attribute to that property.

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

    The MVVM Way

    Do the same as above, except put the property on your viewmodel to which the datagrid is bound. Change the XAML to:

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

    Then all you have to do is change that Property value in whatever way you choose. To get this to update the value when the property changes, you will need to implement INotifyPropertyChanged (Check at the bottom of that post).

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文