将DataGrid值从int Id转换为string描述

时间:2014-07-02 21:39:19

标签: c# wpf xaml datagrid ivalueconverter

我有一个DataGrid,其列定义如下:

<DataGrid ItemsSource="{Binding Events}" SelectionMode="Single" SelectionUnit="FullRow">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Unit" Width="Auto" Binding="{Binding UnitId}"/>
        ...
    </DataGrid.Columns>
</DataGrid>

问题是:我被绑定到只有Events属性的UnitId列表。我不想显示UnitId。我想显示Unit的Description。我的ViewModel包含IList<Unit>,如下所示:

public class Unit 
{
    public int UnitId {get;set;}
    public string Description { get;set;}
}

但是ViewModel不是DataGrid的datacontext,所以我不得不做一些RelativeSource的恶作剧。

因此,例如,如果我的单位UnitId为1,Description为&#34;上层文件夹&#34;,我希望单元格显示&#34;上层文件夹&#34;

我想我可以使用IValueConverter这样的东西,但我不确定这是否是最简单的方法。

1 个答案:

答案 0 :(得分:2)

  1. 添加类型&#39;单位&#39;到你的Event班。
  2. 示例:

    public class Event
    {
        // Other properties...
    
        //Replace UnitId property with this property
        public Unit Unit {get;set;}
    
    }
    
    1. 绑定到Description类的Unit属性。
    2. 示例:<DataGridTextColumn Header="Unit" Width="Auto" Binding="{Binding Unit.Description}"/>