3

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

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

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

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

有人有想法吗?:)

亲切的问候

4

2 回答 2

10

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

<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn"/>

private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = ((PropertyDescriptor)e.PropertyDescriptor).DisplayName;
}
于 2012-12-17T17:12:44.520 回答
0

一种方法可能是

<DataGrid AutoGeneratingColumn="DataGrid_AutoGeneratingColumn">

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = MyPropertyNameConverter.Convert(e.PropertyName);
}
于 2012-12-17T16:29:09.060 回答