0

我正在开发一个 Windows 8 应用程序,我必须创建一个不同大小的图块视图。一个问题是我需要将我的视图进行双重包装:首先,它应该水平包装(即,每列的宽度应该是 2 个图块)。这样的视图将是一个非常高的柱子。接下来,它应该垂直包装。

下面给出了我要创建的视图的草图。是否有任何 Win8 控件能够提供所描述的行为?

我尝试使用VariableSizedWrapGrid,但似乎无法将其双重包装。

在此处输入图像描述

4

1 回答 1

0

好的,时间已经过去了,我没有比创建自定义列模型和使用具有少量 VariableGridViews 的网格(每列一个 VariableGridViews)更好的解决方案了。

也许,我的 XAML 会帮助某人。

<controls:VariableGridView ItemsSource="{Binding Columns}">

    <controls:VariableGridView.ItemTemplate>
        <DataTemplate>

            <controls:VariableGridView ItemsSource="{Binding Tiles}">

                <controls:VariableGridView.ItemTemplate>
                    <DataTemplate>
                        <Grid VariableSizedWrapGrid.ColumnSpan="{Binding Width}">
                            <Rectangle Fill="Red" Width="{Binding WidthPixels}" Height="{Binding HeightPixels}"></Rectangle>
                        </Grid>
                    </DataTemplate>
                </controls:VariableGridView.ItemTemplate>

                <controls:VariableGridView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <VariableSizedWrapGrid VerticalAlignment="Center"
                                    ItemHeight="150"
                                    ItemWidth="150"
                                    MaximumRowsOrColumns="2"
                                    Orientation="Horizontal" Height="768"
                                    AllowDrop="True"
                                    Tapped="VariableSizedWrapGrid_Tapped"/>
                    </ItemsPanelTemplate>
                </controls:VariableGridView.ItemsPanel>
            </controls:VariableGridView>

        </DataTemplate>
    </controls:VariableGridView.ItemTemplate>

</controls:VariableGridView>

模型源代码看起来像(截断)

public class TilesCollection
{
    public ObservableCollection<ITile> Tiles {get; private set;}
}



public class ColumnedListModel
{
    ObservableCollection<TilesCollection> m_columns = new ObservableCollection<TilesCollection>();


    public ObservableCollection<TilesCollection> Columns
    {
        get
        {
            return m_columns;
        }
    }
    // ....
}
于 2013-12-03T14:37:56.250 回答