問題:いくつかのアイテム(たとえば長方形)を持つItemsControlを持つウィンドウ。ウィンドウのMinWidthとMinHeightが設定されています(例:300)。長方形のサイズを変更するときに、長方形に2列で表示するのに十分なスペースがない場合に必要です。また、2列の場合でも、スクロールビューアを表示するのに十分なスペースがありません。
私が試したこと:1。拡張ItemsControlを作成します。
<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として拡張グリッドがあります。
パブリッククラスMyGrid:Grid、IScrollInfo{....IScrollInfo実装}
私はこのグリッドを使用して、ItemsControlがPrepareContainerForItemOverride()を実行するときに、これを使用してアイテムを2つの列に分割できると考えています。
アイデアは会議から「取得」されます....しかし、次に何をすべきかわかりません...次のような質問があります:データグリッドの測定と配置をオーバーライドするとき、データグリッドでアイテムの位置を設定しますが、それからそれはPrepareContainerForItemOverride()と呼ばれます...それでは何ですか?作成する行数を計算する必要がありますか?しかし、その後、ウィンドウのサイズを再度変更すると、PrepareContainerForItemOverride()は呼び出されません...
この問題は私を超えています...あなたの誰かがそれを持っているなら私に手がかりを教えてください。君たちありがとう!