博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【WP7】自定义控件
阅读量:6164 次
发布时间:2019-06-21

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

首先说说自定义控件

  WP7自带的控件使用起来太过于单一,有时候我们需要自己自定义一些空间的行为或显示,下面演示自定义按钮控件,为新控件添加BackColor和ForeColor两个属性

  1、新建一个类,定义两个属性 ForeColor 和 BackColor

public class MyButton : Button        {            public MyButton() { }            public Color ForeColor            {                get                 {                    return ((SolidColorBrush)this.Foreground).Color;                }                set                 {                    this.Foreground = new SolidColorBrush(value);                }            }            public Color BackColor            {                get                 {                    return ((SolidColorBrush)this.Background).Color;                }                set                {                    this.Background = new SolidColorBrush(value);                }            }        }

  接下来是使用,在xaml页面中使用该控件,先添加命名空间

xmlns:local="clr-namespace:PhoneApp1"

  接下来将该属性作为资源样式Style来设置

    但是会报错

    为什么呢,要想为自定义的属性使用Style,那么就必须将之设置为DependencyProperty

      DependencyProperty的定义格式为

      public static readonly DependencyProperty 变量名=

          DependencyProperty.Register("属性名",
          typeof(属性类型),
          typeof(所属类的类型),
          new PropertyMetadata(默认值, 值变化时触发的方法));

    现在我们修改之前的代码,将ForceColor和BackColor设置为DependencyProperty,修改后的MyButton类如下

public class MyButton : Button        {            public MyButton() { }            public Color ForeColor            {                get { return (Color)GetValue(ForeColorProperty); }                set { SetValue(ForeColorProperty, value); }            }            public Color BackColor            {                get { return (Color)GetValue(BackgroundProperty); }                set { SetValue(BackgroundProperty, value); }            }            public static readonly DependencyProperty BackColorProperty =                DependencyProperty.Register("BackColor", typeof(Color), typeof(MyButton),                new PropertyMetadata(Colors.Blue, OnColorChanged));            public static readonly DependencyProperty ForeColorProperty =                DependencyProperty.Register("ForeColor", typeof(Color), typeof(MyButton),                new PropertyMetadata(Colors.Red, OnColorChanged));            private static void OnColorChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)            {                MyButton btn = obj as MyButton;                if (e.Property == ForeColorProperty)                {                    btn.Foreground = new SolidColorBrush((Color)e.NewValue);                }                if (e.Property == BackColorProperty)                {                    btn.Background = new SolidColorBrush((Color)e.NewValue);                }            }        }

 

    然后设置资源

但是,在设计视图中,不能看到效果

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

你可能感兴趣的文章
【python】prepare for python env
查看>>
MyEclipse for Spring 8.5序列号算法
查看>>
iOS开发之项目经验总结
查看>>
Dolibarr可以做什么
查看>>
我的友情链接
查看>>
kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
查看>>
mongodb维护常用命令
查看>>
puppet的相关介绍
查看>>
xamarin.Android SQLite存储
查看>>
经典SQL(sqlServer)
查看>>
java结构控制break和continue
查看>>
脱机通讯录更新方法
查看>>
APUE读书笔记-13守护进程(05)
查看>>
Linux-apache的编译安装1
查看>>
应用交付工程师Troubleshooting经验分享2
查看>>
Part I 1.介绍Lustre文件系统
查看>>
js数组去除重复的
查看>>
阻塞与非阻塞都是什么呢?
查看>>
我的linux redhat6.0之路-1.2
查看>>
use proxy for git
查看>>