0

スタックパネルが連携していません。固定幅と、その中に左から右にレイアウトする可変数の項目があります。

スタック パネルでそれらをレイアウトする項目コントロールがあります。

<ItemsControl x:Name="testItems"
              HorizontalAlignment="Left"
              VerticalAlignment="Top">
    <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Stacktest:ItemControl />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

しかし、これはアイテムのサイズを正しくしません。使用可能なスペースに関係なく、常に同じサイズです。項目が多すぎる場合は、すべてが収まるようにサイズ調整するのではなく、右側が切り取られます。これを達成する方法はありますか? アイテムの数が一定であればグリッドを使用しますが、そうではありません。通常は 1 ~ 4 個のアイテムです。

ItemsPanelTemplate が可変数の列を持つグリッドであると便利です。しかし、ItemsPanelTemplate でそれ (または同じ結果が得られるもの) が可能かどうかはわかりません。

含まれるアイテムに等しい幅を割り当てるパネルの特別なサブクラスを作成する答えはありますか?

4

2 に答える 2

1

あなたが欲しいのはUniformGridだと思います。行が 1 つであることを示すことができ、内部のすべての項目が同じ幅になるようにレイアウトする必要があります。これはまさにあなたが探しているものではないかもしれませんが、それは私が考えることができる最も近いものです.

Silverlight Toolkit がそのようなコンポーネントを提供しているかどうかはわかりませんが、作成方法を示す投稿を見たことがあります。

たとえば、Jeff Wilcox のブログには 1 つのブログがあります。

于 2009-03-16T18:05:40.290 に答える
1

私はおそらく少し古い学校ですが、この種のことを自分で行うのが好きです。バックエンドに小さなコードを記述して、(グリッドを使用して) 動的な数のアイテムをスペースにドロップし、動的な幅と等間隔にすることができます。

これはおそらくあなたが望むように機能し、微調整可能です。

于 2009-03-16T18:29:33.680 に答える