【发布时间】:2018-12-18 21:05:22
【问题描述】:
我需要修改每个列标题的名称以反映每列的单位。目前,我的 DataGrid 绑定到一个包含各种属性的列表。加载数据网格时,每列的标题应采用这种格式“HeaderName(单位)”。我很难检索我的财产类型以显示单位。如何从 DataGrid 中获取每列的类型?
现在我正在硬编码如下,如果我知道类型,我可以检索这些单元而无需硬编码。
private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
dg.Columns[0].Header = dg.Columns[0].Header + "(m/s)"; //=> Speed (m/s)
dg.Columns[1].Header = dg.Columns[1].Header + "(s)"; //=> Duration (s)
...
dg.Columns[7].Header = dg.Columns[7].Header + "(s)"; //=> Duration (s)
}
我的示例 xaml:
<DataGrid ItemsSource="{Binding Path=ObjectList}"
SelectionMode="Single" Name="dg" Loaded="DataGrid_Loaded"/>
对象列表
public class ObjectList
{
public Speed Speed { get; set; }
public Time Duration { get; set; }
public Ampere Current { get; set; }
... (almost 8 properties)
}
我不喜欢在 xaml 中绑定集合中的每种类型。我想像上面的 xaml 一样保持与整个集合本身的绑定。
有没有简单或好的方法来实现这一点?
【问题讨论】:
-
看看这是否有帮助。 stackoverflow.com/questions/1658397/…