如何将WPF控件的内容绑定到其容器的DataContext,以便我可以基于该对象应用DataTemplateSelector?

我正在尝试在包含两个集合A和B的ViewModel上绑定WPF窗口。我正在尝试使用DataTemplates来显示A或B,具体取决于我的ViewModel中的标志设置。 为此,我设置了窗口的
DataContext = ViewModel
。但是,当我尝试将
ContentControl
绑定到该DataContext并对其应用
DataTemplateSelector
时,选择器的
SelectTemplate(object item, DependencyObject container)
方法的
item
参数始终为null:
<Window [snip] Title="MainWindow">
    <Window.Resources>
        <!-- DataTemplate and Selector declarations -->
    </Window.Resources>
    <Grid>
        <ContentControl Content="{Binding}"              
                        ContentTemplateSelector="{StaticResource templateSelector}" />
    </Grid>    
</Window>
我该如何绑定
ContentControl
,以便Window的ViewModel将被传递到它的
DataTemplateSelector
?     
已邀请:
这对我有用:
<ContentControl Content="{Binding DataContext, RelativeSource={RelativeSource Self}}"              
                    ContentTemplateSelector="{StaticResource templateSelector}" />
编辑: 我同意Aaron,这可能不是完成任务的最佳方式。你说你正在使用ViewModel。最简单的方法可能是将ItemsControl绑定到Viewmodel上的新“SelectedCollection”属性,该属性公开所需的集合。然后在你的旗帜中(假设它是一个属性)你可以为“SelectedCollection”触发propertychanged。     
这里发生了很多事...... 你说你使用
DataTemplateSelector
来显示集合A或集合B,同时你声明你正在设置其中一个集合作为窗口的
DataContext
。 如果要在一个集合中隐藏数据,请对集合本身执行过滤。另一种方法是通过
IValueConverter
IMultiValueConverter
运行绑定。另一种解决方案可能是分别将两个UI元素绑定到每个集合,并根据ViewModel中的值更改UI元素的
Visiblity
。 很多不同的选择...如果我理解正确,
DataTemplateSelector
不应该是其中之一。     

要回复问题请先登录注册