2

User のコレクションを保持する ObservableCollection があります

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

および列挙型

enum UserType
{
  Admin,
  Moderator,
  User,
  Guest
}

次に、ViewModel からアクセスできる UserTypeMap という列挙型のマッパーがあります。

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 の方法 (ページの背後にあるコードではない) はありますか?

ありがとう、ウィル

4

1 に答える 1

0

あなたの質問に対する答えではありませんが、UserTypeMap Dictionary を必要としない列挙型のみを表示すると思います。

<sdk:DataGridTextColumn Binding="{Binding UserType, Mode=OneWay, StringFormat={}{0}}" Header="Type"/>
于 2012-04-18T13:49:34.097 に答える