문제 : 일부 항목에 ItemsControl이있는 창이 있습니다 (사각형이라고합시다). 창에 MinWidth 및 MinHeight가 설정되어 있습니다 (예 : 300). 직사각형에 표시 할 공간이 충분하지 않은 경우 창 크기를 조정할 때 2 열로 표시해야합니다. 그리고 2 열에 여전히 스크롤 뷰어를 표시 할 공간이 충분하지 않은 경우.WPF - IScrollInfo 구현
나는 시도했다 : 1. 확장 ItemsControl을 만들기 :
공용 클래스에는 myGrid : 그리드, IScrollInfo
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<local:MyGrid IsItemsHost="True" x:Name="PART_ItemsPanel" Initialized="OnItemsPanelInitialized" CanVerticallyScroll="True" CanHorizontallyScroll="True">
<local:MyGrid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</local:MyGrid.ColumnDefinitions>
<local:MyGrid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</local:MyGrid.RowDefinitions>
</local:MyGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
내 ItemsControl에는 ItemsPanelTemplate 같은 확장 그리드를 가지고 { .... IScrollInfo 구현 }
ItemsControl이 PrepareContainerForItemOverride() 일 때이 항목을 사용하여 항목을 두 개의 열로 나눌 수 있다고 생각하는 표를 사용합니다.
이데아는 회의에서 "가져옵니다"...하지만 다음에해야 할 일을 알지 못합니다 ... 다음과 같은 질문이 있습니다 : 재정의 할 때 데이터 격자에 대한 측정 및 정렬 위치를 설정했습니다. DataGrid의 항목이지만 PrepareContainerForItemOverride()라고하면 ... 무엇을합니까? 내가해야 할 행을 계산해야합니까? 하지만 그때 나는 다시 창 크기를 조정하면 ... PrepareContainerForItemOverride()는 호출되지 않습니다 ...
그것은 내게이 문제입니다 ... 제게 당신이 가진 것이 있다면 단서를주세요. 감사합니다.
이것이 효과가있는 해결책이라면이 질문에 대한 답변으로 대답을 수락하십시오. – Nightfirecat