0

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>

MainWindow で TestHeader を直接使用すると、ViewModel からのデータを確認できるようになりましたが、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 はそうではありません。

アップデート

私はこれまでで最もばかげた間違いを犯しました -

パディングと高さを参照してください。どちらも 20 です。コンタント用のスペースはありません。

4

1 に答える 1

0

親ユーザーコントロールで(ViewModelに)を設定してDataContextから、ViewModelのプロパティを使用してコントロールのプロパティにバインドする必要があります。

于 2013-02-19T10:15:34.443 に答える