6

次のように定義されたリストボックスがあります。

    <ListBox.ItemTemplate>
        <DataTemplate>
            <ItemsControl>
                <!-- Contents here -->
            </ItemsControl>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

私の問題は次のとおりです。このリストはグリッド コントロールに含まれており、含まれているセルの使用可能なすべてのスペースを使用する必要がありますが、親にさらにスペースを割り当てるように強制するべきではありません。しかし、ラップ パネルがいっぱいになると、アイテムを実際に次の行にラップするのではなく (そうあるべきです)、リスト ボックスの幅を拡張するだけで、その過程で親グリッドのサイズも強制的に変更されます。

親のサイズを尊重し、サイズを強制的に拡大しないようにラップ パネルを取得するにはどうすればよいですか?

前もって感謝します!

編集:もう1つ。wrappanel の幅を明示的に設定して折り返すことができますが、wrappanel をリストボックスと同じサイズにしたいと考えています。

4

4 に答える 4

18

セットScrollViewer.HorizontalScrollBarVisibility="Disabled"するWrapPanelとラッピングされます。

<Grid>
    <ListBox
        ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>
于 2010-07-02T12:37:36.417 に答える
0

私は問題を解決しました。問題は(おそらく)私のリストボックスを含むコンテナのいくつかが私のリストボックスにスペースを割り当てるのに少し寛大すぎるということでした。いずれにせよ、残りのコンテナー(リストを含む)のスクロールバーを削除するとすぐに、期待どおりに機能します。:)

お返事ありがとうございます。これを解決するのにとても役立ちました。

于 2010-07-07T06:57:37.350 に答える
-2

デザイン モード (Blend および VS 2013) でこの問題に対処していましたが、デザイン時のサイズ変更をページに追加するまでラップしませんでした。

d:DesignHeight="300" d:DesignWidth="600"

于 2014-04-29T22:46:20.173 に答える