例如,我们有一个带有UnidormGrid的ListBox,如ListBoxPanel。
<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,我的面板将获得可见的大小。
答案 0 :(得分:1)
据我所知,UniformGrid
通过显示的最大子项来获取其单元格大小。根据{{1}}属性,当超出宽度或高度时,它会将内容分解为新行。默认情况下,它设置为Orientation
。
这引出了我的问题:为什么你认为它有无限的宽度?当然,Horizontal
在其默认控件模板中包含ListBox
,但在我看来,它仅为面板提供垂直无限空间(水平,它受限于列表框的宽度),允许打破默认的统一网格。
如果您有任何其他问题,请随时提出。