只需点击一下或左键单击即可选择ListView项目?

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 +单击?如果没有,我如何检测点击或左键点击?

非常感谢你!

Kon*_*man 5

我找到了解决方案.我必须控制列表中Tapped定义的控件的事件DataTemplate,而不是ListView自身的事件:

<SemanticZoom...>
    <SemanticZoom.ZoomedOutView>
        <ListView ...>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border ... Tapped="Item_Tapped">
Run Code Online (Sandbox Code Playgroud)

而在Item_Tapped方法,我只是投senderFrameworkElement看看它DataContext.