现在的位置: 首页 > 综合 > 正文

语义缩放中数据不能定位问题

2017年11月14日 ⁄ 综合 ⁄ 共 1161字 ⁄ 字号 评论关闭

        在微软官方文章中语义式缩放是 Windows 8 Release Preview 中 Metro 风格应用使用的触摸优化技术,用于在一个视图内呈现和导航大量相关数据或内容的集合,换句话说就是为了在一屏内展示更多的信息及便于用户通过缩放后的视图进行跳转到相关内容块。

       其实语义缩放实现起来很简单,就是一个控件的使用,只要自己实现好缩放前、缩放后的界面即可。

<SemanticZoom x:Name="Zoom"
Grid.Row
="1" Margin="0,-3,0,0" ScrollViewer.ZoomMode="Disabled"
>

 

            <SemanticZoom.ZoomedInView>

                缩放前界面

            </SemanticZoom.ZoomedInView>

 

            <SemanticZoom.ZoomedOutView>

                缩放后界面

            </SemanticZoom.ZoomedOutView>

</SemanticZoom>

具体实现方式,大家可以看官网的例子:http://code.msdn.microsoft.com/windowsapps/GroupedGridView-77c59e8e

 

        好了,下面说下SemanticZoom这个控件使用中,大家会经常遇到的问题,可能很多人在使用中,发现点击缩放后的界面的某一项,切换到缩放前的界面后,并没有定位到点击的那一项,简单一点说就是缩放前、缩放后的数据关联不成功。很多人就纳闷了,明明代码和sample是一样的啊,为什么sample可以,我写的就不行。在发现这种问题时,首先去检查你在代码中是否在SemanticZoom这个控件外面包了一个Scrollviewer,如果你包了一个ScrollViewer那么你的定位就不成功了。

       原因很简单,通过查看SemanticZoom的style你会发现,SemanticZoom这个控件本身就是被一个Scrollviewer包着,SemanticZoom的内部实现中应该是将定位功能与该ScrollViewer进行了关联。当你在用这个控件的时候是SemanticZoom本身的ScrollViewer在起作用,如果你这个时候再给SemanticZoom包一个ScrollViewer,那么SemanticZoom本身的ScrollViewer就失效了,于是定位也失效了。

       也许有其他的办法可以在外面包着一个ScrollViewer也能让SemanticZoom的定位功能有效,不过我还没研究出来,有谁研究出来,给我留言提醒下,谢谢哈!

 

      

 

抱歉!评论已关闭.