2

これは、これに対するフォローアップの質問で、回答済みです。

コードの使用:

<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled">
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel Orientation="Vertical"/>
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
</ListBox>

アイテムが列に左から右に入力され、特定の列の最後のアイテムが切り落とされないリストを作成できますListBox(つまり、アイテムが収まりきらない場合、アイテムは次の列の一番上に移動されます)。Widthを動的に調整してListBoxアイテムを「フィット」させ、同じ動作を水平に取得するにはどうすればよいでしょうか。したがって、次のように仮定します。

与えられたで、すべてのアイテムに適合Heightするのに 1 つだけ必要な場合、の は の のサイズである必要があります。ColumnWidthListBoxWidth

または、与えられHeightた 4 つColumnの s が必要な場合は、アイテムの 4 倍のサイズにする必要がありWidthます。

最後に、与えられた で の最大許容数よりも多くの s が必要であるとHeightします。その場合、 s 内の収まりきらないアイテムが切り捨てられずに表示されないように、その幅を計算する必要があります。ユーザーが右にスクロールするまで。ColumnWidth ListBoxColumn

ご協力いただきありがとうございます!!

編集:

上記を表現するより簡単な方法は、リスト内のアイテムの「クリッピング」を回避する方法を探しているということだと思います。アイテムをグリッドに表示するリストを作成したいのですが、一部のアイテムが部分的に覆われており、そのアイテムの残りを表示するには右または左にスクロールする必要があるため、スクロールする必要はありません (ただし、リストは幅または高さが非常に大きくなる可能性があり、すべてを表示するためにスクロールする必要があるアイテムが十分にある場合は、表示されたアイテムだけが完全に表示されるはずです)。また、リストの最初の描画だけを気にします。常にフィットするようにアイテムを「スナップ」する必要はありませんが、表示するアイテムで利用可能なスペースを完全に埋めるようにスクロールできる必要があります。

これを行うための鍵は、実行時のリストアイテムのサイズとリストボックス内のコンテンツコンテナーのサイズを把握することであり、リストが最初に表示される前に一度に非常に多くのアイテムに完全に収まるように調整できるように思えました描かれた?

ありがとう!

4

1 に答える 1

1

これはかなり複雑な質問です。ここで何を達成しようとしているのか 100% 確信が持てません...高さが増加するにつれて、表示される列の数を増減する必要がありますか? 減少することを願っていますが、あなたの質問の言い方では、反対のことを望んでいるようで、私はこれを理解しようとしています.

これらの質問を理解しようとするとき、WPF のレイアウト システムの基本的な理解が非常に役立つと思います。もう 1 つの便利な点は、何かのサイズは、その物自体ではなく、そのレイアウト コンテナーによって大きく決まるということです。

あなたの質問では、内容に基づいて ListBox を動的にサイズ変更する方法を尋ねています。ListBox はレイアウト コントロールではなく、WrapPanel のようなものです。WrapPanel の機能は、Panel のコンテンツのサイズが大きくなっても、同じ幅で言うことです。これは、たとえば Grid などの他のコントロールとは異なります。

WPF のレイアウト システムに関するいくつかの優れたリンクを次に示します。うまくいけば、これが役に立ちます。ご質問の内容を明確にして、必要に応じてさらにサポートが得られるかどうかを確認してください。

http://www.wpftutorial.net/LayoutProperties.html http://msdn.microsoft.com/en-us/library/ms745058.aspx

于 2009-10-11T02:58:26.460 に答える