如何为Snapped View组合语义缩放和Listbox

时间:2012-04-26 12:00:11

标签: c# windows-8 microsoft-metro

我有一个从VS11模板创建的Grouped Items页面。此页面具有用于普通视图的GridView和在捕捉页面时显示的ListView。我需要实现语义缩放,仍然可以捕捉页面。

我尝试移动GridView SemanticZoom.ZoomedInView,所以我有

    <ScrollViewer x:Name="itemListScrollViewer" ...
       <Listview ...
    </ScrollViewer>

    <SemanticZoom Grid.Row="1"  >
        <SemanticZoom.ZoomedInView>
            <GridView ...
        </SemanticZoom.ZoomedInView>
    </SemanticZoom>

当页面未被捕捉时,ListView被隐藏,当页面被捕捉时,gridView被隐藏。问题是在捕捉视图中,ListBox不会滚动,也不会对项目点击做出反应。

2 个答案:

答案 0 :(得分:0)

您希望捕捉的视图还具有语义缩放功能吗?在这些情况下,我所做的是实现两个不同的SemanticZoom,一个用于横向,一个用于捕捉,然后只显示当前视觉状态的正确一个。所以出发点是:

<SemanticZoom x:Name="semanticZoom" Visibility="Visible">
    <SemanticZoom.ZoomedOutView>
        <GridView  ...
    </SemanticZoom.ZoomedOutView>

    <SemanticZoom.ZoomedInView>
        <GridView  ...
    </SemanticZoom.ZoomedInView>
</SemanticZoom>


<SemanticZoom x:Name="semanticZoomSnapped" Visibility="Collapsed">
    <SemanticZoom.ZoomedOutView>
        <ListView ...
    </SemanticZoom.ZoomedOutView>

    <SemanticZoom.ZoomedInView>
        <ListView ...
    </SemanticZoom.ZoomedInView>
</SemanticZoom>

或者如果您在捕捉模式下不需要语义缩放,只需尝试当前的方法,但尝试隐藏SemanticZoom元素而不是其中的GridView。当然要确保ListView的isItemClickEnabled设置为true等。

P.S。我想你在哪里说ListBox你的意思是ListView?由于名为ListBox的元素也存在。

答案 1 :(得分:0)

我找到了解决问题的一种非常奇怪的方法。当我切换SemanticZoom的ordet和ScrollViewer之类的

<SemanticZoom Grid.Row="1"  >
    <SemanticZoom.ZoomedInView>
        <GridView ...
    </SemanticZoom.ZoomedInView>
</SemanticZoom>

<ScrollViewer x:Name="itemListScrollViewer" ...
   <Listview ...
</ScrollViewer>

比一切都有效。知道为什么吗?