首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向ContentTemplateSelector传递参数?

如何向ContentTemplateSelector传递参数?
EN

Stack Overflow用户
提问于 2015-08-20 06:52:30
回答 1查看 1.1K关注 0票数 0

我希望TemplateSelector根据国家/地区选择模板。因此,为了让MyDataTemplateSelector:SelectTemplate接收国家/地区,我将ContentPresenterContent绑定到CountriesComboBox。问题是返回的模板没有绑定到CityStreets。我认为发生这种情况是因为所选模板的DataContext没有绑定到ViewModel,因此无法访问tamplate的绑定属性。

我尝试了下面的代码,但在我看来,它不起作用,因为ContentPresenterContent绑定到了CountriesComboBox,而不是应该绑定到{Binding}。但是,如果我将Content绑定到{Binding},我将无法从TemplatrSelector访问所选的CountriesComboBox项。

那么,我该怎么做呢?

代码语言:javascript
复制
<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}" />
EN

回答 1

Stack Overflow用户

发布于 2015-08-21 04:05:12

我在维克多3岁的post中找到了答案。谢谢维克多。我只需要在每个DataTemplate中添加DataContext="{Binding RelativeSource={RelativeSource AncestorType=ContentControl},Path=DataContext}"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32106912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档