2013-02-19 76 views
0

在主窗口反射數據,我設置其含量的不同是一個用戶控件 -用戶控件內用戶控件不從視圖模型

<Grid> 
    <local:MainControl></local:MainControl> 
</Grid> 

在MainControl,我使用的其他用戶控件 -

<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.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> 

這裏,整個含量的不同是在主窗口的網格。外部TestHeader正在填充數據,但是,Grid中的TestHeader不是。

更新

我得到了我曾經最愚蠢的錯誤 -

參見填充和高度均爲20沒有空間含量的不同。

回答

0

您需要在父級用戶控件上設置DataContext(對ViewModel),然後使用ViewModel的Properties將其綁定到控件的屬性。

+0

這不是問題。查看更新。 – user2039445 2013-02-19 10:27:26