C# 在datagrid中绑定枚举属性的最佳方法
将枚举属性绑定到datagrid的最佳方法是什么。目前我正在使用公共属性并从中返回枚举名称。还有其他方法吗 枚举C# 在datagrid中绑定枚举属性的最佳方法,c#,wpf,data-binding,C#,Wpf,Data Binding,将枚举属性绑定到datagrid的最佳方法是什么。目前我正在使用公共属性并从中返回枚举名称。还有其他方法吗 枚举 public enum enStatus { Draft = 1, Published = 2, Started = 3, Completed = 4 } 型号 class ModelA { private int statudId; public string Status { get { return Enum.GetName(type
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”(或者您将决定如何命名它)。注意,对于每种
enum
类型,您都不需要转换器。强制转换到基类Enum
工作正常:((Enum)值)。ToString()
强制转换enStatus正在工作,但在Enum返回((Enum)值)的情况下无效强制转换异常。ToString()
异常说明了什么?无法将“System.Int32”类型的对象强制转换为“type”系统。Enum“确保绑定到Enum”(例如:public-enStatus-CurrentStatus{get;set;}),而不是像public-int那样的int。