我希望TemplateSelector
可以根據國家/地區選擇模板。 因此,對於MyDataTemplateSelector:SelectTemplate
收到的國家我綁定Content
ContentPresenter
到CountriesComboBox
。 問題是返回的模板未綁定到City
或Streets
。我認爲這是因爲所選模板的DataContext
未綁定到ViewModel,因此無法訪問模板的有界屬性。如何將參數傳遞給ContentTemplateSelector?
我嘗試下面的代碼,但在我看來,由於ContentPresenter
的Content
勢必CountriesComboBox
而不是{Binding}
因爲它應該是它不工作。但是,如果我將Content
綁定到{Binding}
,我將無法訪問TemplatrSelector中的選定項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}" />