2017-07-24 117 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方法,以選擇拖動和點擊按鈕之間的邏輯。