WPF ContentControl不显示用户控件(应该由DataContext绑定)

本文关键字:DataContext 绑定 ContentControl 显示 用户 控件 WPF | 更新日期: 2023-09-27 17:49:33

我有一个UserControl,其中包含一个ContentControl,这反过来应该呈现一个UserControl取决于视图模型,设置为DataContext。

XAML:

<UserControl.Resources>
    <DataTemplate DataType="{x:Type pcViewModels:SystemPCViewModel}">
        <controls:SystemPCControl />
    </DataTemplate>
    <DataTemplate DataType="{x:Type pcViewModels:ChipPCViewModel}">
        <controls:ChipPCControl />
    </DataTemplate>
    <!-- Left out other definition, I guess you get the point -->
</UserControl.Resources>
<Grid Background="Aqua">
      <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ScrollViewer Background="Blue">
        <ContentControl DataContext="{Binding CurrentContent}"/>
    </ScrollViewer>
    <StackPanel 
        Grid.Row="1"
        Orientation="Horizontal" FlowDirection="RightToLeft">
        <Button 
            Width="150" Height="50"
            Content="Configure"
            VerticalAlignment="Center"
            Command="{Binding CurrentContent.ConfigureCommand}" />
    </StackPanel>
</Grid>

我使网格和ScrollViewer的背景丑陋可见只是为了确保它是可见的。这都是可见的,我可以看到视图模型是DataContext(按钮也工作得很好)。

我以前用过ContentControl,据我所知就是这样的。我做错了什么?

WPF ContentControl不显示用户控件(应该由DataContext绑定)

你必须设置ContentControl的Content属性。您可以执行以下操作之一:

<ContentControl DataContext="{Binding CurrentContent}" Content="{Binding}" />

<ContentControl Content="{Binding CurrentContent}" />