博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone 7 自定义控件库
阅读量:6540 次
发布时间:2019-06-24

本文共 2702 字,大约阅读时间需要 9 分钟。

      Windows Phone 7自定义一个控件库跟Silverlight的是基本一样的,第一步创建一个类库,然后添加一个Themes文件夹,在文件夹里面添加上generic.xaml文件作为默认的控件样式文件,记住一定要写这个名字否则就找不到样式了,大小写都可以。新建一个控件类MyContro1.cs,MyContro2.cs在这里面就可以写控件的处理逻辑了。

下面看一下一个水印控件的处理:

generic.xaml文件

WatermarkTextBox..cs

using System.Windows; using System.Windows.Controls; namespace Phone.Controls {
public class WatermarkedTextBox : TextBox {
ContentControl WatermarkContent; public static readonly DependencyProperty WatermarkProperty = DependencyProperty.Register("Watermark", typeof(object), typeof(WatermarkedTextBox), new PropertyMetadata(OnWatermarkPropertyChanged)); public static readonly DependencyProperty WatermarkStyleProperty = DependencyProperty.Register("WatermarkStyle", typeof(Style), typeof(WatermarkedTextBox), null); public Style WatermarkStyle {
get { return base.GetValue(WatermarkStyleProperty) as Style; } set { base.SetValue(WatermarkStyleProperty, value); } } public object Watermark {
get { return base.GetValue(WatermarkProperty) as object; } set { base.SetValue(WatermarkProperty, value); } } public WatermarkedTextBox() {
DefaultStyleKey = typeof(WatermarkedTextBox); } public override void OnApplyTemplate() {
base.OnApplyTemplate(); this.WatermarkContent = this.GetTemplateChild("watermarkContent") as ContentControl; if(WatermarkContent != null) {
DetermineWatermarkContentVisibility(); } } protected override void OnGotFocus(RoutedEventArgs e) {
if (WatermarkContent != null && string.IsNullOrEmpty(this.Text)) {
this.WatermarkContent.Visibility = Visibility.Collapsed; } base.OnGotFocus(e); } protected override void OnLostFocus(RoutedEventArgs e) {
if (WatermarkContent != null && string.IsNullOrEmpty(this.Text)) {
this.WatermarkContent.Visibility = Visibility.Visible; } base.OnLostFocus(e); } private static void OnWatermarkPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) {
WatermarkedTextBox watermarkTextBox = sender as WatermarkedTextBox; if(watermarkTextBox != null && watermarkTextBox.WatermarkContent !=null) {
watermarkTextBox.DetermineWatermarkContentVisibility(); } } private void DetermineWatermarkContentVisibility() {
if (string.IsNullOrEmpty(this.Text)) {
this.WatermarkContent.Visibility = Visibility.Visible; } else {
this.WatermarkContent.Visibility = Visibility.Collapsed; } } } }

 

 

转载地址:http://tusdo.baihongyu.com/

你可能感兴趣的文章
树状数组模板
查看>>
我的家庭私有云计划-19
查看>>
项目实践中Linux集群的总结和思考
查看>>
关于使用Android NDK编译ffmpeg
查看>>
监控MySQL主从同步是否异常并报警企业案例模拟
查看>>
zabbix从2.2.3升级到最新稳定版3.2.1
查看>>
我有一个网站,想提高点权重
查看>>
Web前端开发必备:《Jquery实战》第3版 介绍
查看>>
2017年前端框架、类库、工具大比拼
查看>>
浅谈(SQL Server)数据库中系统表的作用
查看>>
微软邮件系统Exchange 2013系列(七)创建发送连接器
查看>>
程序员杂记系列
查看>>
配置Exchange 2010 服务器(二)Exchange2010证书配置
查看>>
折腾啊!不知道是不是Surface第一个售后顾客
查看>>
影响IO性能的request queue
查看>>
Kafka消息时间戳(kafka message timestamp)
查看>>
【树莓派】制作树莓派所使用的img镜像(一)
查看>>
使用Apache Tiles3.x构建界面布局
查看>>
Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...
查看>>
velocity模板使用建议
查看>>