Windows Phone自定义控件

简介:

为了实现公司需求,不得不自己写自定义控件。首先第一个需求是密码掩码和明码显示的切 换。做的时候发现PasswordBox没有切换掩码和明码的属性或方法。那好咱只好自己动手实现,用一个TextBox和passwordBox来分别 实现掩码和明码的显示。直接上效果图吧。

明码显示

掩码显示

旧密码仍旧掩码显示,而新编辑的密码是明码显示

第二个控件是下拉刷新控件。下拉提示下拉可以刷新,下拉到一定程度提示松开可以刷新,松开手后显示正在刷新。

这样的控件网上还是有例子的,继承ListBox,使用自己的控件模版来实现一个下拉刷新列表框。然而做好后发现,公司需求是要可以容纳大批量数据的列表,而且还要提供复选框。

这没关系,有Toolkit控件嘛,LongListSelector有虚拟化功能,可以加载大约8000条数据而不占用大量内存开销,而且还有选择状态,列表项前面有复选框。好吧,咱就继承LongListSelector 控件实现一个下拉刷新控件。

照同样的方法写好了,然而发现数据绑定上去后,竟然显示不出任何数据。这是为毛啊,为毛啊!断点调试ItemsSource数据有绑定上去啊!瞬间泪奔啊!

后来从Toolkit的源码里面找到LongListSelector 的控件模版,发现承载内容的模版是好像是叫ViewPorts的控件。好把咱把控件的模版里面内容承载的模版换成Viewport。再次运行,OK!显示成功,瞬间内流满面!上图

效果出来了,咱试试大批量数据加载,先加个800条看看,有些卡,不过还算正常。

再试试加载1000条数据,瞬间崩溃了,为啥呀,为啥呀!后来发现继承LongListSelector 写的控件的模版有ScrollViewer,这个东西破坏了虚拟化。从LongListSelector 的可视化树中取ScrollViewer,压根没这东西,只能取到ScrollBar。好吧!这样写是不行的,再次泪奔了。

最后绞尽脑筋只能用控件的MouseEnter、MouseMove和MouseLeave三个事件,加上控件ScrollBar的Value值来 模拟这样的效果。总算是能实现同样的效果,不过效果比继承的方法略差。好处是,完全不会破坏LongListSelector 的虚拟化,一次加载个1000条数据完全显示正常,不会崩溃。总算能交差了!

目录
相关文章
|
4月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
61 0
|
11月前
|
C++ Windows
C++ Windows窗口程序:子窗口控件之按钮类button
C++ Windows窗口程序:子窗口控件之按钮类button
550 0
|
API C# Windows
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
C#对Windows窗口或窗口句柄的操作,都是通过 P/Invoke Win32 API 实现的,DllImport引入Windows API操作窗口(句柄),可以实现枚举已打开的窗口、向窗口...
2009 0
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
|
Windows
Windows程序设计——Windows单选按钮、复选框、分组框控件
Windows程序设计——Windows单选按钮、复选框、分组框控件
516 0
Windows程序设计——Windows单选按钮、复选框、分组框控件
|
Windows
Windows程序设计——(源代码)Windows单选按钮、复选框、分组框控件
Windows程序设计——(源代码)Windows单选按钮、复选框、分组框控件
164 0
|
Android开发 iOS开发 Windows
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
1241 0
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
|
XML 开发框架 前端开发
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
133 0
Windows Phone快速入门需掌握哪些能力
|
编解码 前端开发 JavaScript
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
161 0
|
移动开发 Android开发 开发者
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
230 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
windows窗口中控件的样式
windows窗口中控件的样式一.按钮样式 button BS_AUTO3STATE 创建一个与三态复选框相同的按钮,但该框在用户选择时更改其状态。状态循环通过检查,不确定和清除。 BS_AUTOCHECKBOX 创建一个与复选框相同的按钮,但每次用户选中复选框时,检查状态会自动在已选中和已清除之间切换。
1283 0