我有一个datagridview绑定到“CarColor”对象列表。我试图在dataGridView中添加一个额外的列,它接受每个CarColor的Name属性并显示本地化版本。
目前我有一个扩展方法,用于创建列并使用正确的值填充它,但每次dataGridView更改可见性或数据时,Localized Name列中的所有单元格都将变为空。在此之前,我通过在dataGridView的VisibileChanged和DataSourceChanged事件上运行扩展方法来管理变通方法。这很麻烦,特别是如果我试图影响另一个控件(如对话框)中的DataGridView。
我已经读过,通过设置新列的“表达式”值,可以使用DataGrid。但是,我不知道是否可以将列表转换为DataGrid,或将DataGridView转换为DataGrid。
如何确保不删除“本地化名称”表的值?
答案 0 :(得分:0)
如果您有List<CarColor>
,则不需要DataTable
来添加新的计算列。您只需向CarColor
添加一个新属性即可返回所需的计算值,或者在您的情况下添加其Name
属性的本地化值。
public partial class CarColor
{
publlic string LocalizedName
{
get
{
return GetLocalizedName(this.Name);
}
}
private string GetLocalizedName(string name)
{
// put the logic for localizing the name here
}
}
注意:强>
我写了partial
,所以你可以让原来的CarColor
类不受影响,只需在相同的命名空间中添加这个部分,或者如果你愿意,只需添加该类的正文代码原始CarColor
。
如果CarClass
不在你的班级而且你没有更改它的代码,你可以为CarColor
创建一个ViewModel类,并使用相同的想法来表示该属性。