2

3 つの異なるコントロール タイプのコレクションを表示できる WPF コンテナーを作成する必要があります。各コントロールの高さと幅は、他のコントロールに基づいています。たとえば、controlA が 200X200 の場合、controlB は 100X200 になり、controlC は 50X50 になります。使用可能なスペースと各コントロール タイプの数に基づいて最適なレイアウトを見つけることにより、これらのコントロールを配置するのに十分スマートなコンテナーを作成する方法を見つける必要があります。

以下の例では、controlA のインスタンスが 1 つ、controlB のインスタンスが 1 つ、controlC のインスタンスが 2 つあるとします。一連のコントロールのリストとは対照的に、これがコンパクトな外観を与えるようにエレガントに配置されていることに注目してください。

コンテナ http://onlinegolfpool.com/images/grid.png

取り組む方法についてのアイデアはありますか?グリッドを使用して、これを自分で計算する必要がありますか?

前もって感謝します

4

2 に答える 2

2

間違いなくグリッドを使用する必要がありますが、これを自分で計算することさえ考えないでください:)各セルの相対的なサイズを定義するには、アスタリスク(*)を使用します。WPF が残りの作業を行います。

例:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="2*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Rectangle Fill="Pink" Stroke="Black" Grid.RowSpan="2"/>
    <Rectangle Fill="Blue" Stroke="Black" Grid.Column="1" Grid.ColumnSpan="2"/>
    <Rectangle Fill="Yellow" Stroke="Black" Grid.Row="1" Grid.Column="1"/>
    <Rectangle Fill="Yellow" Stroke="Black" Grid.Row="1" Grid.Column="2"/>
</Grid>

アスタリスクは非常に強力ですが、多くの人はそのことを知りません:) お楽しみください!

于 2012-06-22T16:42:07.707 に答える
0

私の提案は、gridpanelの代わりにstackpanelを使用することです。次に、必要なコントロールにハードコードされた幅を指定すると、残りの領域が自動的に調整されます。

<StackPanel Orientation=Horizontal>
    <leftcontrol/>
    <StackPanel Orientation=Vertical>
        <firstcontrol/>
        <StackPanel Orientation=Horizontal>
            <bottomLeftControl/>
            <bottomRightControl/>
        </StackPanel> 
    </StackPanel>
</StackPanel>
于 2012-06-22T16:46:30.863 に答える