TemplateSelector
国に基づいてテンプレートを選択する必要があります。だから、私がバインドする国MyDataTemplateSelector:SelectTemplate
を受け取るために。問題は、返されたテンプレートがまたはにバインドされていないことです。選択したテンプレートがViewModelにバインドされていないため、タンプレートのバインドされたプロパティにアクセスできないために発生すると思います。Content
ContentPresenter
CountriesComboBox
City
Streets
DataContext
以下のコードを試してみましたが、私の意見では、Content
ofContentPresenter
がバインドされているのにバインドされCountriesComboBox
ていないため{Binding}
、機能しません。しかし、にバインドするContent
と、 TemplatrSelector{Binding}
の選択されたアイテムにアクセスできなくなります。CountriesComboBox
それで、どうすればいいですか?
<DataGrid>
<DataGrid.Resources>
<DataTemplate x:Key="Readonly_CellEditingTemplate">
<TextBlock Text="{Binding City}"/>
</DataTemplate>
<DataTemplate x:Key="Editable_CellEditingTemplate">
<ComboBox ItemsSource="{Binding Streets}" />
</DataTemplate>
<local:MyDataTemplateSelector ReadonlyTemplate="{StaticResource Readonly_CellEditingTemplate}" EditableTemplate="{StaticResource Editable_CellEditingTemplate}" x:Key="MyDataTemplateSelector"/>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="City">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding City}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ContentPresenter x:Name="Presenter" Content="{Binding ElementName=CountriesComboBox, Path=SelectedIndex}" ContentTemplateSelector="{StaticResource MyDataTemplateSelector}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<ComboBox Name="CountriesComboBox" ItemsSource="{Binding Countries}" />