Xaml 按钮控件作为ListView数据模板容器wrt拖放ListView元素

Xaml 按钮控件作为ListView数据模板容器wrt拖放ListView元素,xaml,listview,drag-and-drop,uwp,winrt-xaml,Xaml,Listview,Drag And Drop,Uwp,Winrt Xaml,当我在DataTemplate for ListView(UWP应用程序)中使用按钮控件时,ListView项的拖放不起作用。如果我使用StackPanel、RelativePanel或Grid之类的容器,而不是按钮控件,那么一切都可以正常工作。我更喜欢按钮控件作为容器,因为我喜欢它在ListView项目上的鼠标悬停效果。我可以为StackPanel等做一些类似的事情,通过使用样式和行为编程的组合使用自定义悬停效果,但尽量避免这一路线(太复杂) 我可以对Button控件做些什么,使它在成为Lis

当我在DataTemplate for ListView(UWP应用程序)中使用按钮控件时,ListView项的拖放不起作用。如果我使用StackPanel、RelativePanel或Grid之类的容器,而不是按钮控件,那么一切都可以正常工作。我更喜欢按钮控件作为容器,因为我喜欢它在ListView项目上的鼠标悬停效果。我可以为StackPanel等做一些类似的事情,通过使用样式和行为编程的组合使用自定义悬停效果,但尽量避免这一路线(太复杂)

我可以对Button控件做些什么,使它在成为ListView数据模板的一部分时,能够给我悬停并响应拖放事件吗


我也很好奇,是什么特别使按钮抑制了ListView项的拖放。

按钮捕获了指针,这导致指针单击事件不会向上冒泡到ListViewItem,从而导致拖放开始

您可以查看
ReleasePointerCapture
方法,该方法将释放指针捕获,允许其他项捕获它


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

按钮正在捕获指针,这导致指针单击事件不会冒泡到导致拖放以开始

您可以查看
ReleasePointerCapture
方法,该方法将释放指针捕获,允许其他项捕获它


您需要创建一个新的类,它扩展默认按钮类并重写,例如<代码> OnPoTeBu压< /Cord>方法,以选择拖放和单击按钮之间的逻辑。

您应该考虑重新设置ListVIEW项以自定义自定义悬停效果,而不是使用这里的按钮,它会吞下你所有的动作,就像拖放一样。只需确保测试虚拟化性能;或者,正如您已经知道的,在堆栈面板中进行自定义。我必须重新考虑该选项。我从重新设置listview的样式开始,虽然它有我所需要的一切,包括hover,但对于我所需要的,它没有使用按钮控件这样的自定义容器灵活(在listview项数组中实现不同的配置)。感谢输入。您应该考虑重新设置ListVIEW项,以便定制自定义悬停效果,而不是使用这里的按钮,它会吞下所有像拖拽N下拉的手势。只需确保测试虚拟化性能;或者,正如您已经知道的,在堆栈面板中进行自定义。我必须重新考虑该选项。我从重新设置listview的样式开始,虽然它有我所需要的一切,包括hover,但对于我所需要的,它没有使用按钮控件这样的自定义容器灵活(在listview项数组中实现不同的配置)。谢谢你的意见。