在数据网格中绑定枚举属性的最佳方法



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

列举

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>

您的方法有效,但我更喜欢使用绑定转换器来清理您的 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 文件的资源部分中声明"enumConverter"(或者您决定如何命名它)。

最新更新