2017-07-24 80 views
1

当我在ListView(UWP应用程序)的DataTemplate中使用Button控件时,拖放ListView项不起作用。如果我使用StackPanel,RelativePanel或Grid等容器而不是Button控件,则一切正常。我更喜欢Button控件作为容器,因为我喜欢它对ListView项目的鼠标悬停效果。我可以通过使用Style和Behavior编程的组合来实现类似于StackPanel等的自定义悬停效果,但是尝试避免这种路由(太涉及)。按钮控件作为ListView DataTemplate容器与拖放ListView元素

我可以对Button控件做些什么,以便让我悬停并在ListView DataTemplate的一部分时响应拖放事件?

我也很好奇什么专门使按钮压制ListView项的拖放。

+1

你应该考虑restyling listview项目的定制悬停效果比在这里使用按钮,这将吞下所有的手势,如拖拽。只需确保测试虚拟化性能;或者,如你所知,在你的堆栈面板中做一个自定义的。 –

+0

我必须重新考虑该选项。我开始重新调整列表视图,同时还有我需要的一切,包括悬停,因为我需要它不像使用按钮控件这样的自定义容器(在ListView项目数组中实现不同的配置)那么灵活。感谢您的意见。 – user2921851

回答

0

Button正在捕获指针,导致指针单击事件不会冒泡到ListViewItem,从而导致拖动开始。

你可以看看ReleasePointerCapture方法,它将释放指针捕获,允许其他项目捕获它。

您将需要创建一个新的类,它扩展了默认的Button类并覆盖例如OnPointerPressed方法,以选择拖动和点击按钮之间的逻辑。