用于动态按钮的Windows Phone 8.1流量容器

时间:2015-08-18 23:14:38

标签: c# asp.net xaml gridview

SOF Tribe,

我有一个流容器标识的请求,我可以在其中倒入一个不确定数量的动态创建的XAML按钮。所述按钮应尽可能地包裹文本(我想我有一个模板)。但是按钮应该像gridview一样包裹,但是像stackpanel一样运行。有没有人知道一个允许我完成图像描绘的容器?

目前,对于下面的现有图片,我使用的是gridview,但gridview设置了一个特定的宽度,但流量不均匀。 stackpanel具有所需的端到端样式,但不会包装。那么,有什么想法吗?

Auto wrapping flow container

1 个答案:

答案 0 :(得分:2)

Greg Stoll制造了所谓的UniversalWrapPanel。那么,这就是我要采取的方向。然而,现在,我已经有了最后一点要解决的问题。如何获取绑定数据以尊重父容器包装内容的能力,而不仅仅是将其堆叠在垂直列中。

下面的XAML给出了下面的图像结果,这不是我想要的。静态添加按钮对UniversalWrapPanel工作正常。但是,试图让一个绑定和ItemsSource工作,那么,此时我已经超越了我。

enter image description here

<support:UniversalWrapPanel  Orientation="Horizontal" Background="White">
    <ItemsControl x:Name="GridViewRecipients" ItemsSource="{Binding}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Button Style="{StaticResource ButtonLozengeStyle}" Content="{Binding FullName}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</support:UniversalWrapPanel>

好的,所以多搜索一下,我发现了这个:

http://www.visuallylocated.com/post/2015/02/20/Creating-a-WrapPanel-for-your-Windows-Runtime-apps.aspx

所以这里是引用ItemsControl中的UniversalWrapPanel的正确方法:

<ItemsControl x:Name="GridViewRecipients" ItemsSource="{Binding}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <support:UniversalWrapPanel Orientation="Horizontal" Background="DodgerBlue"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Style="{StaticResource ButtonLozengeStyle}" Content="{Binding FullName}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

结果:

enter image description here