首先,我們需要讓冰箱的大門敞開,也就是允許我們進行拖拽的相關操作。以listview為例,注意下面幾個屬性。
1<
stackpanel
>
2<
listview
x:name
="list"
3allowdrop
="true"
4canreorderitems
="true"
5isswipeenabled
="true"
>
6<
listview.itemcontainerstyle
>
7<
style
targettype
="listviewitem"
>
8<
setter
property
="background"
value
="gray"
/>
9<
setter
property
="foreground"
value
="white"
/>
10<
setter
property
="margin"
value
="4"
/>
11style
>
12listview.itemcontainerstyle
>
13listview
>
14<
button
click
="button_click"
>show items
button
>
15<
textblock
x:name
="txt"
/>
16stackpanel
>
allowdrop屬性允許元素進行拖動,它繼承自uielement基類,為所有可視元素支援。
canreorderitems屬性繼承自listviewbase基類,允許列表控制項的項可以重新排序。
isswipeenabled屬性(swipe有「輕掃」之意)也需要設定為「true」,否則在觸控螢幕等輸入裝置下無法進行操作。相關的詳盡說明在msdn文件裡有介紹(此部分摘錄部分原文:
remarks
setting isswipeenabled tofalsedisables some default touch interactions, so it should be set totruewhen these interactions are needed. for example:
(有趣的是最後一段:當列表不允許輕掃手勢(撤銷選定,拖動,拖拽重排)時,我們可以「顯式」地將isswipeenabled屬性設定為false來提公升應用的效能。)
前台ok後,我們就可以在後台加點東西,把我們的排序邏輯(其實並沒有,微軟已經寫好了)新增進去。這個demo裡,我用了乙個按鈕和乙個文字框來觀察重排的結果。如下:
1public
sealed
partial
class
mainpage : page
2-----");
9}10}
1112
private
void button_click(object
sender, routedeventargs e)
1319
}20 }
這樣,重新排序後,點選按鈕,我們即可觀察到結果了。
把大象(?)裝進去之後,最後就是我們的收尾工作了。顯然,剛才的列表只是乙個中間的載體,是我們待排序欄目的簡單顯示。一般而言,這個listview會安置在contentdialog或是popup裡,那麼怎麼在重排後立即讓父頁面上的欄目得到相應,進行重排呢?我們用個預定義的委託即可,加在剛才的後台**裡(冰箱能裝的東西其實挺多的)。
public action action;
然後在父頁面註冊方法,比如:
1 btn.click += async (s, e) => 2;5await
dialog.showasync();
6 };
大功告成!
vue列表拖拽排序功能實現
1.實現目標 目標是輸入乙個陣列,生成乙個列表 通過拖拽排序,拖拽結束後輸出乙個經過排序的陣列。2.實現思路 2.1是使用html5的drag功能來實現,每次拖拽時直接操作dom節點排序,拖拽結束後再根據實際的dom節點遍歷得出新的陣列。2.2使用mousedown,mouseover等滑鼠事件來實...
php介面實現拖拽排序功能
列表拖拽排序是乙個很常見的功能,但是後端介面如何處理卻是乙個令人糾結的問題 如何實現才能達到效率最高呢?先分析乙個場景,假如有乙個頁面有十條資料,所謂的拖拽就是在這十條資料來來回回的拖,但是每次拖動都會影響到其他資料例如把最後一條拖到最前面,那麼後面九條就自動往後移,反之也是,嗯 先想象一下,排序號...
在 Rails 中實現拖拽排序功能
首先,如果你使用了 webpack,那麼你可以在 package.json 中新增 jquery ui 1.12.1 如果沒有使用 webpack,那麼在 gemfile 檔案中新增 gem jquery ui rails import jquery ui ui widgets sortable 或...