2012-04-18 74 views
2

我有保存用户DataGridTextColumn绑定到IDictionary的

class User 
{ 
    public int Id{ get; set; } 
    public UserType UserType{ get; set; } 
} 

的收集和枚举

enum UserType 
{ 
    Admin, 
    Moderator, 
    User, 
    Guest 
} 

,然后我有可以从视图模型被访问的枚举称为UserTypeMap一个映射一个ObservableCollection

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, 我尝试过使用组合框,使用的SelectedValue和ItemsSource时,它的工作, 但我想以显示它在文本框中/标签,而不是组合框...

是否有一个纯xaml的方式(不是页面背后的代码)来做到这一点?

感谢, 请问

回答

0

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

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

我不想显示键(枚举),我想显示的值是字符串。例如,如果我有密钥管理员,我想显示“管理员”,但无论如何 – 2012-04-18 14:15:27

相关问题