在的StackPanel是不协同操作。我们有一个固定的宽度,和项目的可变数量来布置左到右在其内部。

我们有一个项控件会生出来用栈面板:

<ItemsControl x:Name="testItems"
              HorizontalAlignment="Left"
              VerticalAlignment="Top">
    <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Stacktest:ItemControl />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

但是,这正确地不尺寸的项目。他们总是相同的大小,不管多少空间可用。如果有太多的项目,他们都在右边切掉,而不是大小,使它们都融入其中的。任何想法如何做到这一点?我会使用一个网格,如果项目的数量是恒定的,但事实并非如此。这是典型地1-4项。

这将是很好如果ItemsPanelTemplate可以与列的可变数目的网格。但我不知道这是否(或者具有相同结果的东西),可以在ItemsPanelTemplate。

是写面板的特殊子类,分配给包含的项相等宽度的答案?

有帮助吗?

解决方案

我想你想要什么UniformGrid。 您可以表明,它有一个排了,应该布局内的所有项目具有相同的宽度。 这可能不完全是你在找什么,但是这是我能想到的最接近的。

我不知道如果Silverlight工具包提供了这样一个组成部分,但我看到的帖子,说明如何建立一个。

杰夫威尔科克斯的例如博客有一个。

其他提示

我可能是有点老派,但我喜欢做这种类型的事情我自己。 可以在后端写一点代码滴在空间项目的动态数(格子),并使它们一个动态宽度和均匀地隔开。

这可能会工作,你所希望的方式,并tweakable。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top