最后一个答案(来自 VinceF)也对我有用。
我想根据我的视图模型中的属性值显示一个用户控件。所以我用一些样式触发器制作了一个 ContentControl。根据绑定属性的值,触发器设置包含特定用户控件的特定 ContentTemplate。
用户控件显示正确,但其 DataContext 始终为空。所以我必须将 ContentControl 的 Context 设置为:Content="{Binding}"
之后,UserControls 工作正常,并且与它们的父级具有相同的 DataContext。
所以我的 XAML 看起来像这样:
在参考资料部分,我定义了两个 DataTemplate;我要显示的每个 UserControl 的每个。
<DataTemplate x:Key="ViewA">
<namespace:UserControlA/>
</DataTemplate>
<DataTemplate x:Key="ViewB">
<namespace:UserControlB/>
</DataTemplate>
我根据属性显示 UserControl 的部分如下:
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Property}" Value="0">
<Setter Property="ContentControl.ContentTemplate" Value="{StaticResource ViewA}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Property}" Value="1">
<Setter Property="ContentControl.ContentTemplate" Value="{StaticResource ViewB}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>