GridView 列に ComboBox の DataTemplate があります。セルが編集されているときは ComboBox を表示し、それ以外の場合は TextBlock を表示したいと考えています。ただし、TextBox に目的の値を表示するのに問題があります。
行の ViewModel には RegionId しかありませんが、Combo は Region オブジェクトのコレクション (Id と Name を含む) にバインドされています。値が編集されていないときに Region.Name を表示したいのですが、現時点では、ViewModel に Name プロパティが含まれていないため、RegionId を表示する方法しか見つかりません。
私は Telerik コンボボックスを使用していますが、これは単なるバインドの問題であると考えているため、標準の ComboBox コントロールでも問題は同じであると思います。
TextBlock を DataTemplate にバインドするにはどうすればよいですか?
<telerik:GridViewDataColumn>
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding RegionId}" /> <!-- would like Region.Name -->
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<telerik:RadComboBox ItemsSource="{Binding Source={StaticResource regionView}}"
DisplayMemberPath="Name" SelectedValuePath="Id" SelectedValue="{Binding Path=RegionId, Mode=TwoWay}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>