繼續聊WPF Thumb控制項

2021-10-07 00:03:39 字數 2288 閱讀 3234

這個控制項,真不好介紹,msdn上也是草草幾句,反正就是可以讓使用者拖動的玩意兒,但是,你會發現,當你在該控制項上拖動時,它沒有反響,也就是說這個東西預設不做任何操作的,它是賴在那裡什麼都不幹,除非你去踢上腳。

而且,這個控制項就像乙個四方鴨,你踢一腳它就前進一步,你不踢,它又在那裡尸位素餐,什麼都不幹了。

還是用乙個例子來說明吧,不過,還是先說一下重要的東西。

thumb有幾個核心事件,都是與拖動有關。

往深一層想,它是什麼?對,就是我們常見的滾動條裡面的滑塊,就是我們在網格裡面可以拖動的分隔線,就是視窗右下角用於通過拖動來改變視窗大小的小東西。

thumb的核心事件有:

dragstarted——當你在它上面按下滑鼠左鍵,開始拖動時發生;

dragdelta——只要你的拖動仍在操作(沒鬆開滑鼠左鍵),它就會不斷地發生;

dragcompleted——不用說,這個肯定是在拖動操作結束後發生。

這三個事件怎麼用呢?可以這樣想象一下,開始拖動時把控制項變成灰色,在拖動過程中改變控制項的位置(前面說了,它預設不做任何動作,所以要手動處理),當完成後把外觀恢復,這樣就經過了這三個事件。

但是,我在這個例子中,使用了控制項模板的觸 髮器,這樣更方便一點。

請看演示

把thumb放到乙個canvas中,因為它是唯一乙個是絕對定位的控制項,接著我們為thumb定義模板,弄漂亮一點。

<

controltemplate x:key=

"ct" targettype=

"">

<

grid x:name=

"bg"

>

<

lineargradientbrush startpoint=

"0.2,0" endpoint=

"0.77,0.9"

>

<

gradientstop color=

"#aa0311" offset=

"0.1"

/>

<

gradientstop color=

"#cccccc" offset=

"0.62"

/>

<

gradientstop color=

"#82c3ff" offset=

"0.89"

/>

<

/lineargradientbrush>

<

/grid.background>

<

/grid>

<

trigger property=

"isdragging" value=

"true"

>

<

setter targetname=

"bg" property=

"background" value=

"gray"

/>

<

/trigger>

<

/controltemplate.triggers>

<

/controltemplate>

<

/window.resources>

<

canvas x:name=

"g" width=

"300" height=

"300" margin=

"0,0"

>

<

thumb canvas.top=

"0" canvas.left=

"0" width=

"35" height=

"35" template=

"" dragdelta=

"thumb_dragdelta"

/>

<

textblock canvas.top=

"2" canvas.left=

"2" x:name=

"tt" fontsize=

"24"

>

<

/textblock>

<

/canvas>

然後,在後台處理事件

private void thumb_dragdelta(object sender, system.windows.controls.primitives.dragdeltaeventargs e)

繼續聊WPF Thumb控制項

這個控制項,真不好介紹,msdn上也是草草幾句,反正就是可以讓使用者拖動的玩意兒,但是,你會發現,當你在該控制項上拖動時,它沒有反響,也就是說這個東西預設不做任何操作的,它是賴在那裡什麼都不幹,除非你去踢上腳。而且,這個控制項就像乙個四方鴨,你踢一腳它就前進一步,你不踢,它又在那裡尸位素餐,什麼都不...

繼續聊WPF Thumb控制項

這個控制項,真不好介紹,msdn上也是草草幾句,反正就是可以讓使用者拖動的玩意兒,但是,你會發現,當你在該控制項上拖動時,它沒有反響,也就是說這個東西預設不做任何操作的,它是賴在那裡什麼都不幹,除非你去踢上腳。而且,這個控制項就像乙個四方鴨,你踢一腳它就前進一步,你不踢,它又在那裡尸位素餐,什麼都不...

繼續聊WPF BulletDecorator控制項

這是乙個很簡單的控制項,無非就是控制專案的布局方式,其布局方式只有兩種 從左到右,從右到左。一 從左到右 二 從右到左 布局方向由flowdirection屬性來決定,所以我說這個控制項非常簡單 上面的截圖的xaml如下 帶矩形的項 下面例子展示乙個帶文字框的項 請輸入您的鳥名 為什麼這裡都用到la...