私が次のようなドメインモデルを持っているとしましょう:
class User {
public string FirstName { get; set; }
public string LastName { get; set; }
public string MiddleName { get; set; }
public int Age { get; set; }
// tons of other stuff
}
私はObservableCollection
これらのうちの1つを持ってUserList
います。これを次のようにDataGridにバインドします。
<dg:DataGrid ItemsSource="{Binding Path=UserList}" SelectedIndex="{Binding Path=Selecteduser}">
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Header="Name" Binding="{Binding Path=FirstName, Mode=OneWay}" />
<dg:DataGridTextColumn Header="Age" Binding="{Binding Path=Age, Mode=OneWay}" />
</dg:DataGrid.Columns>
</dg:DataGrid>
次に、ユーザーのフルネームのグリッド列を追加することにしました。私のUser
オブジェクトにはこのプロパティがありませんが、オブジェクトを渡せば簡単に計算できUser
ます。User
このプロキシを処理するためのプロキシクラス(ビューモデル)を作成したり、User
大量のコードを書き換えたり、ドメインオブジェクトからプロキシオブジェクトに状態をコピーしたりせずに、オブジェクトのこのような派生「プロパティ」にバインドするにはどうすればよいですか?
かなりクリーンで明白な解決策は拡張メソッドですが、どうやらそれにバインドすることはできません。
グリッドに伝えたいだけです。この列には、ユーザーと、これが何のためにあるかを示すキー( "fullname"など)を渡してください。列に使用するデータを返します。