4

ItemsPanelTemplateをWrapPanelとして実装するリストボックスがあります。ナビゲーションのために行数を数える必要があります

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Grid.IsSharedSizeScope="True" />
        </ItemsPanelTemplate>
    <ListBox.ItemsPanel>
<ListBox>

直接的な方法はありますか?

4

1 に答える 1

6

はフロー制御であるためWrapPanel、計算を実行して、自分に合うオブジェクトの数を決定する必要があります。

ActualHeightプロパティを取得し、それをパネルに配置するオブジェクトのアイテム(またはのプロパティ)のプロパティでWrapPanel除算します。それはあなたに行数を与えるはずです:ActualHeightItemHeightWrapPanel

int numRows = (int)(WrapPanel.ActualHeight / Item.ActualHeight);

また:

int numRows = (int)(WrapPanel.ActualHeight / WrapPanel.ItemHeight);

マージンが設定されている場合、この計算はオフになりますが、それらを考慮に入れることができるはずです。

(とを使用して同じことを行い、ActualWidthItemWidthの数を取得できます)。

于 2012-11-20T23:20:10.230 に答える