1
例如,我們有一個帶有UnidormGrid(如ListBoxPanel)的ListBox。UniformGrid如何使用無限大小
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}, Path=Items.Count}"></UniformGrid>
<!--<cntr:StackGrid Orientation="Horizontal" Direction="Normal"/>-->
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<Button>1</Button>
<Button>2</Button>
<Button>3</Button>
<Button>4</Button>
</ListBox>
ListBox將給無限大小UniformGrid,但沒有任何錯誤。 UniformGrid將只使用可見的大小。它是如何做到的?它會幫助我建立我自己的小組。
P.S.我知道,我可以禁用ListBox中的ScrollView,並且我的面板將顯示可見大小。
您可以閱讀MSDN上的[Panels Overview](http://msdn.microsoft.com/en-us/library/ms754152.aspx)文章。它有一個關於自定義面板的部分。 – Clemens 2014-09-04 06:08:34
沒有關於如何使用無限大小的信息。 – Nodon 2014-09-04 06:27:06
從[UIElement.Measure](http://msdn.microsoft.com/en-us/library/system.windows.uielement.measure.aspx)中的備註部分以及[UIElement.Arrange](http:// msdn.microsoft.com/en-us/library/system.windows.uielement.arrange.aspx):* availableSize可以是從零到無窮的任何數字*。這不是一個錯誤,而只是意味着面板可以佈置其子項的大小不受限制。你只需要處理它。但是您必須從MeasureOverride或ArrangeOverride中返回無限大小。 – Clemens 2014-09-04 06:47:43