【问题标题】:UserControl inside UserControl is not reflecting data from ViewModelUserControl 中的 UserControl 不反映来自 ViewModel 的数据
【发布时间】:2013-02-19 10:06:12
【问题描述】:

在 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,没有空格。

【问题讨论】:

    标签: c# wpf data-binding user-controls


    【解决方案1】:

    您需要在父用户控件中设置DataContext(到 ViewModel),然后使用 ViewModel 的属性将其绑定到控件的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      相关资源
      最近更新 更多