0

WrapPanel と Orientation="Horizo​​ntal" を使用する場合、ListBoxItems を拡大しようとしています。

<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding SomeCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border>
                <!--Some Textboxes and Labels-->
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

WrapPanel を使用しない場合、ListBox のサイズに合わせて ListBoxItems が拡張されます。WrapPanel を使用すると、ListBoxItems の幅が最小になります。

簡単に言うと:

水平方向に配置された 2 つの ListBoxItems を持つリストがあります。

2 つのアイテムを含むリスト

メイン ウィンドウを展開すると、Horizo​​ntalAlignment="Stretch" があるため ListBox も展開されますが、ListBoxItems は展開されません。 ここに画像の説明を入力

だから私が欲しいのは、以下の例のように ListBoxItems を ListBox で展開することです。

ウィンドウを展開した後の同じリスト

このシナリオの ListBox 以外のより良いコントロールはありますか? これが十分に明確でない場合はお知らせください。助けてくれてありがとう。

4

2 に答える 2

2

水平ラップ パネルを使用することはできず、要素が水平方向に伸びることも期待できません。これは論理的な利害の矛盾です。実際、何らかの種類のストレッチが必要な場合、 aWrapPanelはおそらく適切なパネルではありません。

全体的にすべての水平方向のスペースを取りながら、均等なスペースを確保したい場合は、 a UniformGrid( Rows1 に設定) を使用します。

于 2012-07-17T17:52:54.060 に答える
0

UniformGridaを次のItemsPanelように使用できるはずです。

<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding SomeCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border>
                <!--Some Textboxes and Labels-->
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1" Columns="2" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
于 2012-07-17T22:23:37.690 に答える