在 MainWindow 中,我将其内容设置为 UserControl -
<Grid>
<local:MainControl></local:MainControl>
</Grid>
在 MainControl 中,我正在使用其他 UserControls -
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="White" Offset="0"></GradientStop>
<GradientStop Color="LightBlue" Offset="1"></GradientStop>
</LinearGradientBrush>
</Grid.Background>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
</Grid>
<Grid Grid.Row="0">
<ui:TestHeader Height="20" Padding="20" Margin="2" Background="Gray"></ui:TestHeader>
</Grid>
</Grid>
这里 TestHeader 是一个简单的 UserControl -
<UserControl.DataContext>
<model:TestViewModel></model:TestViewModel>
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="{Binding Path=Test}"/>
</Grid>
现在我可以看到来自 ViewModel 的数据,当我直接在 MainWindow 中使用 TestHeader 时,但是当我在 MainControl 中使用相同的 TestHeader 时,它没有从 ViewModel 获取数据。我该如何解决这个问题。我想,我错过了一些东西,但不知道是什么。
请提出解决方案。提前致谢。
更新
我找到了这个 -
<Grid Grid.Row="1">
<ui:TestHeader Height="20" Padding="20" Margin="2" Background="Gray"></ui:TestHeader>
</Grid>
<ui:TestHeader Grid.Row="0" Background="Gray" Height="20"></ui:TestHeader>
在这里,整个内容都在 MainWindow 的 Grid 中。外部 TestHeader 正在填充数据,但是 Grid 内的 TestHeader 不是。
更新
我犯了有史以来最愚蠢的错误-
看 padding 和 height,都是 20。没有空间容纳。