win10 uwp 獲得Slider拖動結束的值

2022-01-15 09:10:19 字數 1107 閱讀 9653

本文講的是如何獲得slider移動結束的值,也就是觸發移動後的值。如果我們監聽valuechanged,在我們滑鼠放開之前,只要拖動不放,那麼就不停觸發,而我們可能要得到事件是拖動結束後,那麼我們如何獲得。

在wpf,我們可以使用thumb.dragcompleted,連線:這個在uwp沒有,所以我們沒法使用這個。

但是可以使用滑鼠放開的值,在 uwp 把觸控放開、滑鼠這些叫 pointer 那麼是否監聽 pointerreleased 就可以獲得滑鼠放開,實際監聽也拿不到事件。

開始寫乙個簡單頁面

pointerreleased="uielement_onpointerreleased">

slider>

然後後台使用 f12 生成**,不需要寫什麼,但是在函式開始寫斷點,斷點可以按 f9 就可以。這時候使用 f5 執行專案,可以看到,在滑鼠鬆開不會進入斷點。

那麼是否有其他事件可以使用?實際上只有 sizechanged ,他無法獲得滑鼠鬆開的值,也就是拖動結束的值。所以還是需要使用 pointerreleased ,為何這個函式不會進入?因為ms在注釋寫 請注意,並不保證press操作結束會激發 windows.ui.xaml.uielement.pointerreleased 事件;可能會改為激發其他事件。如果需要監聽這個事件需要使用**。

原因就是在底層進入 pointerreleased 使用了 e.handle = true ,在 uwp 的路由事件,如果乙個元素已經被設定事件處理,那麼一般新增的事件函式就不會執行,如果需要這個事件函式執行,那麼需要使用後台**說無論是否在底層有處理,都需要觸發,這樣就可以使用在滑鼠放開拿到值。

首先修改介面,給元素名稱,然後開啟後台**,新增一段特殊的**。

"slider">

public

mainpage()

這樣,垃圾ms在底層處理,現在還是可以獲得,因為設定了如果在之前處理,還使用定義的函式,這時在 uielement_onpointerreleased 就可以獲得滑鼠鬆開的值。

參見:uwp開發大坑之—路由事件 - 快樂 就在你的心 的部落格

win10 uwp 獲得焦點改變

本文講的是當我們應用失去焦點時,我們獲得事件,當我們應用獲得焦點,同樣獲得事件。同時,在應用不可以見時,我們也可以獲得。上面一張圖,開始是應用啟動,獲得焦點,應用顯示。然後我們開啟另乙個應用,切換,這時我們應用沒有焦點。然後我們用滑鼠點選應用,我們應用獲得焦點,這時顯示滑鼠點選獲得焦點。我們使用al...

win10 uwp 獲得元素絕對座標

有時候需要獲得乙個元素,相對視窗的座標,在修改他的位置可以使用。那麼 uwp 如何獲得元素座標?我提供了乙個方法,可以獲得元素的座標。首先需要獲得元素,如果沒有獲得元素,那麼如何得到他的座標?假如 xaml 是這樣,而我需要獲得 maintextblock 相對視窗的座標 maintextblock...

win10 uwp 繫結密碼

win10 下,密碼框無法繫結到viewmodel,password是不可以繫結。我們可以自己使用簡單方法去繫結 我們之前在wpf 使用繫結密碼框,我寫了一篇,關於如何繫結,我提供乙個我自己試了可以的類。首先,我們新建乙個類,這個類是讓 passwordbox 可以繫結password。uwp讓 p...