2012-11-20 7 views
4

ItemsPanelTemplate을 WrapPanel로 구현 한 목록 상자가 있습니다. 탐색 목적으로 행 수를 계산해야합니다.WrapPanel에서 행 수 가져 오기?

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

직접적인 방법이 있습니까?

+0

감사합니다. @KDiTraglia – Ammark

+0

왜 행 수를 계산해야합니까? 어떤 특정 탐색 작업을 지원 하시겠습니까? – devuxer

+0

화살표 키를 사용하여 목록 상자를 탐색하고 싶습니다. 현재 위나 아래를 누르면 선택 항목이 세로 방향이 아닌 가로 방향으로 이동합니다. @DanM – Ammark

답변

6

WrapPanel은 흐름 제어이므로 사용자가 맞는지 얼마나 많은 객체가 있는지 계산을 수행해야합니다.

WrapPanelActualHeight 속성을 가지고 당신이 패널에 배치하는 개체의 항목 (또는 WrapPanelItemHeight 속성)의 ActualHeight하여 해당 나눕니다.

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

나 : 그건 당신에게 행의 수를 제공해야

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

당신이 여백 설정이있는 경우이 계산이 꺼져있을 것입니다,하지만 당신은이를 고려 할 수 있어야한다.

(열 수를 얻으려면 ActualWidthItemWidth과 동일하게 입력 할 수 있습니다.)

+0

항목에 대한 ActualHeight는 어떻게 받습니까? – Ammark

+0

@Ammark - 이미 그 속성이 있어야합니다 - 당신은 그것이 무엇인지 말하지 않았습니다. – ChrisF

+0

'ItemHeight'는'ActualHeight'보다 더 잘 작동 할 것입니다. – devuxer