0

例: 2 つのコントロールがあります。1 つは幅が 600 "ピクセル" で、もう 1 つは幅が 200 "ピクセル" で、最初のコントロールのすぐ下に右揃えで表示されます。最初のコントロールの背景は、LinearGradientBrushリソース ディクショナリで定義されています。

目標: 2 番目のコントロールが最初のコントロールの拡張のように見えるように、2 番目のコントロールの背景を最初のコントロールと同期させたい。

LinearGradientBrush問題: 2 番目のコントロールの背景が200 "ピクセル" を超えて引き伸ばされ、最初のコントロールが 600 "ピクセル" を超えて引き伸ばされるため、単純な背景バインディングはオプションではありません。はい、2 番目のコントロールが最初のコントロールと一致するように新しいブラシを手動で定義できますが、何か (コントロールのサイズ、ブラシ) を変更した場合は、2 番目のブラシを手動で再度更新する必要があります。背景を自動的に同期させたい。

の良い解決策はありLinearGradientBrushますか? すべてのタイプのブラシに共通のソリューションはありますか?

4

2 に答える 2

0

次のことがあなたのために働きますか?説明されているように2つを含む1つの大きなコントロール。そして、あなたの2人でカバーされていない空きスペースを埋める別のコントロール。2つのコントロールに透明な背景を持つ、設計された背景を持つ大きな包含コントロールを用意します。最後の塗りつぶしコントロールは、これらすべての親コントロールのバインドを使用します。それが理にかなっていることを願っています。;)

于 2013-01-03T11:26:13.693 に答える
0

コントロール間の比率が一定の場合は、次のようにオフセットを調整することで、背景をコントロール全体に「伸ばす」ことができます。

<Grid Width="700" Height="300">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="auto" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <!-- Horizontal gradient -->
    <Grid Width="600" Grid.Row="1" Grid.Column="1">
        <Grid.Background>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <GradientStop Color="Red" />
                <GradientStop Color="Green" Offset="1" />
            </LinearGradientBrush>
        </Grid.Background>
    </Grid>
    <Grid Width="200" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right">
        <Grid.Background>
            <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                <GradientStop Color="Red" Offset="-2" />
                <GradientStop Color="Green" Offset="1" />
            </LinearGradientBrush>
        </Grid.Background>
    </Grid>

    <!-- Vertical gradient -->
    <Grid Width="600" Grid.Row="3" Grid.Column="1">
        <Grid.Background>
            <LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
                <GradientStop Color="Blue" />
                <GradientStop Color="Yellow" Offset="2" />
            </LinearGradientBrush>
        </Grid.Background>
    </Grid>
    <Grid Width="200" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right">
        <Grid.Background>
            <LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
                <GradientStop Color="Blue" Offset="-1" />
                <GradientStop Color="Yellow" Offset="1" />
            </LinearGradientBrush>
        </Grid.Background>
    </Grid>
</Grid>
于 2013-01-03T12:03:21.290 に答える