我在 WPF 中有一个 DataGrid 并用如下数据填充它:
public enum Sharing
{
Equal,
SurfaceBased,
}
public class Data
{
public bool Active { get; set; }
public string Name { get; set; }
public int Floor { get; set; }
public Sharing Sharing { get; set; }
}
public ObservableCollection<Data> _col = new ObservableCollection<Data>()
{
new Data(){Active = true, Name = "KRL", Floor = 0 },
new Data(){Name = "DAT", Floor = 1},
new Data(){Name = "TRE", Floor = 1},
new Data(){Name = "DUO", Floor = 2},
};
public MainWindow()
{
InitializeComponent();
grid.AutoGenerateColumns = true;
grid.DataContext = _col;
grid.ItemsSource = _col;
}
我想知道是否可以在枚举和 POCO 类上使用一些属性,以便 DataGrid 在标题和 ComboCoxes 上显示它们(而不是变量名称)。
像这样的东西:
public enum Sharing
{
[Name("This is a test")]
Equal,
[Name("This is a test 2")]
SurfaceBased,
}
这可能吗?
好的。这是对标题执行此操作的方法:
您添加属性,例如Description
您的属性的属性。
public class MyPOCO
{
[Description("The amount you must pay")]
public float Amount { get; set; }
}
然后,在从 DataGrid 派生的类中执行以下操作:
protected override void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e)
{
try
{
base.OnAutoGeneratingColumn(e);
var propDescr = e.PropertyDescriptor as System.ComponentModel.PropertyDescriptor;
e.Column.Header = propDescr.Description;
}
catch (Exception ex)
{
Utils.ReportException(ex);
}
}
为了向枚举成员添加自定义名称,您需要创建一个自定义列。您可以在这里看到一个简单的示例:https://stackoverflow.com/a/17510660/964053.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)