该问题实际上与此处描述的相同:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/542b827a-7c8e-4984-9158-9d8479b2d5b1 http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/542b827a-7c8e-4984-9158-9d8479b2d5b1但我对那里接受的答案不满意,觉得必须有更好的解决方案......
我试图在我的列表视图上实现一个“经典”上下文菜单(不是通过 AppBar 而是通过 PopupMenu),并且效果很好,但是只有当我将列表视图设置为“无”SelectionMode 时。
上面的链接正确地解释了如果 ListView 设置为“无”选择模式以外的其他模式,ListViewItem 将“吞噬”右侧点击事件。我如何覆盖此行为,以便列表视图项目被选中,并且列表视图仍然触发我可以做出反应的 RightTapped 事件?
我相信我通过子类化 ListView 和 ListViewItem 类解决了这个问题。
public class MyListView : ListView
{
protected override DependencyObject GetContainerForItemOverride()
{
return new MyListViewItem();
}
}
public class MyListViewItem : ListViewItem
{
protected override void OnRightTapped(Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
{
base.OnRightTapped(e);
e.Handled = false; // Stop 'swallowing' the event
}
}
<CustomControls:MyListView
x:Name="MyListView"
...
SelectionMode="Single"
RightTapped="MyListView_RightTapped">
</CustomControls:MyListView>
通过这种简单的方法,即使 SelectionMode 设置为“单”、“多”或“扩展”,也会调用 MyListView_RightTapped 处理程序。然而下一个问题是,这一小小的胜利是否会带来良好的应用程序 UI 设计。我不会在这里尝试回答这个问题......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)