1

特定のレイアウトを実装しようとしています。

垂直に積み重ねたい 2 つの要素があります (互いに密接に追従する必要があります)。私は現在、Stackpanel を使用してそれを達成しようとしています。

問題は、最初の要素の幅を制限し、もう一方の要素を StackPanel で利用可能なすべての幅を使用することです。理想的には、最初の要素の幅が、StackPanel を含むグリッドの 4 列の幅に等しいことを望みます。これが私のコードです。

<Grid>
<!-- Colums and Rows definition go here -->
<StackPanel  Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="8">
    //The first element
    <Viewbox Name="viewbox_choix" Margin="160,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="4">
    //The second element
    <StackPanel Grid.Column="0" Grid.ColumnSpan="5">
        <Border></Border>
        etc...
    </StackPanel>
</StackPanel>
</Grid>

グリッド属性は、スタックパネルの親グリッドを参照しています。しかし、Grid.Column と Grid.ColumnSpans は、StackPanel 内で使用しようとすると効果がないようです。

そのコードの問題は、最初の要素も StackPanel のすべての幅を使用することですが、それは私が望むものではありません...

誰でも私を助けることができますか?私はまだWPFを学んでおり、バインディングがどのように機能するのか本当にわかりません...

4

1 に答える 1

1

WPF では、 aStackPanelは のようには機能しませんGrid。最大幅はありません...コンテンツが右側から消えてしまいます。自動サイズ変更が必要な場合は、StackPanels を `Gridに置き換えるだけです

更新 >>>

クラスには、Gridという添付プロパティがありますIsSharedSizeScope。これを親に追加し、Gridtrue に設定します。次に、必要な列にプロパティをRowDefinitions追加できます。SharedSizeGroup

これらの例はあなたを助けるかもしれません:

グリッドの SharedSizeGroup と * サイジング(SO 投稿)

Grid.IsSharedSizeScope 添付プロパティ(MSDN)

少し実験する必要があるかもしれませんが、これらのプロパティを使用して目的の効果を得ることができるはずです。

于 2013-07-25T10:48:19.813 に答える