自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Windows Phone自定義控件

移動(dòng)開(kāi)發(fā)
Windows Phone的控件有幾個(gè)來(lái)源,和傳統(tǒng)的桌面應(yīng)用程序開(kāi)發(fā)或Web開(kāi)發(fā)一樣,有默認(rèn)提供的控件和第三方開(kāi)者發(fā)布的第三方控件。一般而言,如果不是過(guò)于復(fù)雜的界面布局,使用默認(rèn)控件就足矣。

為了實(shí)現(xiàn)公司需求,不得不自己寫自定義控件。首先第一個(gè)需求是密碼掩碼和明碼顯示的切 換。做的時(shí)候發(fā)現(xiàn)PasswordBox沒(méi)有切換掩碼和明碼的屬性或方法。那好咱只好自己動(dòng)手實(shí)現(xiàn),用一個(gè)TextBox和passwordBox來(lái)分別 實(shí)現(xiàn)掩碼和明碼的顯示。直接上效果圖吧。

明碼顯示

掩碼顯示

舊密碼仍舊掩碼顯示,而新編輯的密碼是明碼顯示

 

第二個(gè)控件是下拉刷新控件。下拉提示下拉可以刷新,下拉到一定程度提示松開(kāi)可以刷新,松開(kāi)手后顯示正在刷新。

這樣的控件網(wǎng)上還是有例子的,繼承ListBox,使用自己的控件模版來(lái)實(shí)現(xiàn)一個(gè)下拉刷新列表框。然而做好后發(fā)現(xiàn),公司需求是要可以容納大批量數(shù)據(jù)的列表,而且還要提供復(fù)選框。

這沒(méi)關(guān)系,有Toolkit控件嘛,LongListSelector有虛擬化功能,可以加載大約8000條數(shù)據(jù)而不占用大量?jī)?nèi)存開(kāi)銷,而且還有選擇狀態(tài),列表項(xiàng)前面有復(fù)選框。好吧,咱就繼承LongListSelector 控件實(shí)現(xiàn)一個(gè)下拉刷新控件。

照同樣的方法寫好了,然而發(fā)現(xiàn)數(shù)據(jù)綁定上去后,竟然顯示不出任何數(shù)據(jù)。這是為毛啊,為毛??!斷點(diǎn)調(diào)試ItemsSource數(shù)據(jù)有綁定上去??!瞬間淚奔??!

后來(lái)從Toolkit的源碼里面找到LongListSelector 的控件模版,發(fā)現(xiàn)承載內(nèi)容的模版是好像是叫ViewPorts的控件。好把咱把控件的模版里面內(nèi)容承載的模版換成Viewport。再次運(yùn)行,OK!顯示成功,瞬間內(nèi)流滿面!上圖

效果出來(lái)了,咱試試大批量數(shù)據(jù)加載,先加個(gè)800條看看,有些卡,不過(guò)還算正常。

再試試加載1000條數(shù)據(jù),瞬間崩潰了,為啥呀,為啥呀!后來(lái)發(fā)現(xiàn)繼承LongListSelector 寫的控件的模版有ScrollViewer,這個(gè)東西破壞了虛擬化。從LongListSelector 的可視化樹中取ScrollViewer,壓根沒(méi)這東西,只能取到ScrollBar。好吧!這樣寫是不行的,再次淚奔了。

最后絞盡腦筋只能用控件的MouseEnter、MouseMove和MouseLeave三個(gè)事件,加上控件ScrollBar的Value值來(lái) 模擬這樣的效果??偹闶悄軐?shí)現(xiàn)同樣的效果,不過(guò)效果比繼承的方法略差。好處是,完全不會(huì)破壞LongListSelector 的虛擬化,一次加載個(gè)1000條數(shù)據(jù)完全顯示正常,不會(huì)崩潰??偹隳芙徊盍?!

責(zé)任編輯:閆佳明 來(lái)源: cnblogs
相關(guān)推薦

2009-06-08 20:13:36

Eclipse自定義控

2017-02-17 09:37:12

Android自定義控件方法總結(jié)

2009-09-03 13:34:03

.NET自定義控件

2014-09-24 11:42:46

AndroidButton

2011-07-05 18:51:51

QT 控件 鼠標(biāo)

2009-02-10 12:55:39

自定義控件AJAX.NET

2009-08-05 17:03:37

C#自定義控件

2009-08-06 17:13:56

ASP.NET自定義控

2021-08-25 10:14:51

鴻蒙HarmonyOS應(yīng)用

2021-08-16 14:45:38

鴻蒙HarmonyOS應(yīng)用

2015-02-11 17:49:35

Android源碼自定義控件

2009-08-03 13:34:06

自定義C#控件

2009-08-03 13:39:46

C#自定義用戶控件

2010-12-01 13:40:13

樞軸控件Windows Pho

2010-12-01 13:55:29

地圖插件Windows Pho

2013-04-12 11:02:50

WWindowsPho

2012-04-27 14:43:42

HTML5

2009-07-31 10:23:09

ASP.NET源碼DateTimePic

2021-09-06 14:58:23

鴻蒙HarmonyOS應(yīng)用

2010-08-03 16:13:01

FlexBuilder
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)