Kon*_*man 1 microsoft-metro windows-8 semantic-zoom
我正在开发一个使用语义缩放的Windows 8 metro应用程序,方法如下:
放大视图包含一个ListView复杂的控件,允许用户交互(通过使用TextBox和Button控件),因此这个ListView具有IsItemClickEnabled="False".用户必须手动触发缩小视图.
缩小视图包含另一个ListView显示简单列表,该列表显示放大视图中控件的某些状态信息.ItemsSource此ListView 的属性使用在视图处于活动状态时创建的普通对象进行动态填充.这个ListView有IsItemClickEnabled="True".
我想要什么:
当用户点击或点击缩小视图中的项目时,应该激活放大的视图,并且应该使与所单击的项目匹配的控件可见(放大的ListView允许滚动,因此可以隐藏控件).只要在SelectionChanged单击项目时触发事件,我就知道如何执行此操作.
会发生什么:
当用户点击或点击缩小视图中的项目时,放大视图会自动激活,不会SelectionChanged触发任何事件.但是,使用右键单击或Ctrl +单击时,它可以正常工作.
所以,我的问题是:
有没有办法让ListView触发SelectionChanged项目点击或左键单击事件,除了右键单击和Ctrl +单击?如果没有,我如何检测点击或左键点击?
非常感谢你!
我找到了解决方案.我必须控制列表中Tapped定义的控件的事件DataTemplate,而不是ListView自身的事件:
<SemanticZoom...>
<SemanticZoom.ZoomedOutView>
<ListView ...>
<ListView.ItemTemplate>
<DataTemplate>
<Border ... Tapped="Item_Tapped">
Run Code Online (Sandbox Code Playgroud)
而在Item_Tapped方法,我只是投sender来FrameworkElement看看它DataContext.