【问题标题】:WPF MVVM DataGridColumnHeader DisplayNameWPF MVVM DataGridColumnHeader DisplayName
【发布时间】:2012-12-04 14:54:36
【问题描述】:

我在 MVVM 中有一个 DataGrid,它的 ItemsSource 绑定到一个自定义模型。

此模型中的属性的命名方式与其在数据库中的等价物相同。 比如这个:

public string StapelStatus_Txt
    {
        get
        {
            return this.stapelstatusTxt;
        }
        set
        {
            this.stapelstatusTxt = value;
            this.OnPropertyChanged("StapelStatus_Txt");
        }
    }

是否有可能(不重命名属性)为数据网格声明另一个显示名称?我认为数据注释“DisplayName”会有所帮助......但它没有。

有人有想法吗?:)

亲切的问候

【问题讨论】:

  • 在获取部分返回备用名称
  • get 部分不返回列标题名称,而是单元格的值
  • 您有多少个 DataGrid?如果不多,则不要自动生成列,在 XAML 中声明它们。然后你可以随心所欲地自定义它们。

标签: wpf data-binding mvvm datagrid datagridcolumn


【解决方案1】:

例如,您可以在属性上使用DisplayNameAttribute 并像这样设置列标题:

<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn"/>

private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = ((PropertyDescriptor)e.PropertyDescriptor).DisplayName;
}

【讨论】:

  • 这正是我所需要的!谢谢!
【解决方案2】:

一种方法可以是

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn">

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = MyPropertyNameConverter.Convert(e.PropertyName);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多