0

在我的应用程序的主页上,我有类似这样的内容,显示不同的小节并尊重各节之间的 80 像素边距。

<GridView>
    <GridView.Style>
        <Style TargetType="GridView">
            <Setter Property="ItemContainerStyle">
                <Setter.Value>
                    <Style TargetType="GridViewItem">
                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                        <Setter Property="Margin" Value="0, 0, 80, 0"/>
                        <Setter Property="VerticalContentAlignment" Value="Stretch" />
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="GridViewItem">
                                    <ContentPresenter/>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Setter.Value>
            </Setter>
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </GridView.Style>
    <Grid>
        <TextBlock Text="SubTitle1"/>
        ...
    </Grid>
    <Grid>
        <TextBlock Text="SubTitle2"/>
        ...
    </Grid>
    <Grid>
        <TextBlock Text="SubTitle3"/>
        ...
    </Grid>
</GridView>

现在我想向它添加语义缩放,这样当我缩小时,我看到的子部分标题有点像天气应用程序。我过去曾使用 ItemsSource 进行 SemanticZoom,但如果我将实际项目直接放入我的 GridView 并且没有进行分组,我该怎么做。

编辑:其他人如何处理创建这些以 80 像素分隔的单独子部分?为了让 SemanticZoom 工作,两个 GridView 都必须绑定到相同的集合吗?

4

1 回答 1

1

您上面的 GridView 需要有一个名称,我们称之为ZoomedInGV。这当然成为SemanticZoom.ZoomedInView内部的控件。然后你需要创建另一个 GridView,我们称之为ZoomedOutGV。最后,您需要在两个视图之间创建绑定。解决方案应如下所示:

<SemanticZoom>
    <SemanticZoom.ZoomedInView>
        <GridView x:Name="ZoomedInGV">
        ...
        </GridView>
    </SemanticZoom.ZoomedInView>
    <SemanticZoom.ZoomedOutView>
        <GridView x:Name="ZoomedOutGV" ItemsSource="{Binding ElementName=ZoomedInGV, Path=Items}"/>
    </SemanticZoom.ZoomedOutView>
</SemanticZoom>
于 2012-09-19T17:51:55.280 回答