DataGridTextColumn绑定到IDictionary

时间:2012-04-18 13:35:37

标签: wpf silverlight xaml data-binding datagrid

我有一个ObservableCollection,它包含User

的集合
class User
{
  public int Id{ get; set; }
  public UserType UserType{ get; set; }
}

和枚举

enum UserType
{
  Admin,
  Moderator,
  User,
  Guest
}

然后我有一个名为UserTypeMap的枚举映射器,可以从ViewModel访问

public class UserListViewModel : INotifyPropertyChanged
{
  ......
  public ObservableCollection<User> Users
  {
    get{ return this.users; }
    set{ this.users = value; this.InvokePropertyChanged( "Users" );
  }
  public IDictionary<UserType, string> UserTypeMap{ get; set; }
  {
    get{ return this.userTypeMap; }
    set{ this.userTypeMap= value; this.InvokePropertyChanged( "UserTypeMap" ); 
  }
  ....
}

在客户端,我创建了一个包含用户列表的DataGrid

<sdk:DataGrid ItemsSource="{Binding Users}">
  <sdk:DataGridTextColumn Binding="{Binding Id}" Header="ID"/>
  <sdk:DataGridTextColumn Binding="{**??????????**}" Header="Type"/>
</sdk>

我不知道如何将字典值绑定到 DataGridTextColumn , 之前我尝试使用combobox,使用SelectedValue和ItemsSource并且它有效, 但我想在文本框/标签上显示它,而不是在组合框上显示...

这样做是否有纯xaml方式(不是代码隐藏页面)?

谢谢, 将

1 个答案:

答案 0 :(得分:0)

不是您问题的答案,但我认为只显示您不需要UserTypeMap字典的枚举。

<sdk:DataGridTextColumn Binding="{Binding UserType, Mode=OneWay, StringFormat={}{0}}" Header="Type"/>