UniformGrid如何使用无限大小

时间:2014-09-04 05:45:38

标签: c# .net wpf listbox panel

例如,我们有一个带有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,我的面板将获得可见的大小。

1 个答案:

答案 0 :(得分:1)

据我所知,UniformGrid通过显示的最大子项来获取其单元格大小。根据{{​​1}}属性,当超出宽度或高度时,它会将内容分解为新行。默认情况下,它设置为Orientation

这引出了我的问题:为什么你认为它有无限的宽度?当然,Horizontal在其默认控件模板中包含ListBox,但在我看来,它仅为面板提供垂直无限空间(水平,它受限于列表框的宽度),允许打破默认的统一网格。

如果您有任何其他问题,请随时提出。