在datagrid中绑定枚举的最佳方法

时间:2016-02-24 12:53:09

标签: c# wpf data-binding

什么是将enum属性绑定到datagrid.current的最佳方法我正在使用公共属性并从那里返回枚举名称还有其他方法吗?

枚举

public enum enStatus
{
    Draft = 1,
    Published = 2,
    Started = 3,
    Completed = 4
}

模型

class ModelA
{
  private int statudId;
  public string Status {  get { return Enum.GetName(typeof(enStatus),statudId); }
}

数据网格

<DataGrid Name="dataGrdAssignments" Style="{StaticResource dataGridManageScreens}" SelectedCellsChanged="dataGrdAssignments_SelectedCellsChanged">
      <DataGrid.Columns>
        <DataGridTextColumn Header="Status" Width="150" Binding="{Binding Status}" ElementStyle="{StaticResource gridElementStyle}" EditingElementStyle="{StaticResource gridEditElementStyle}">
        </DataGridTextColumn>
      </DataGrid.Columns>
</DataGrid>

1 个答案:

答案 0 :(得分:2)

您的方法有效,但我更喜欢使用绑定转换器来清理ViewModel。

public class EnumConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((Enum)value).ToString()
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return  null;
    }
}

在你的XAML中,有这样的东西:

Binding="{Binding Status, Converter="{StaticResource ResourceKey=enumConverter}}" 

不要忘记在xaml文件的resources部分声明你的“enumConverter”(或者你决定命名它)。