• silverlight的自定义依赖属性


    silverlight开的的关键所在于依赖属性(DependencyProperty),包括现在的silverlight任何元素的属性都是通过它构造出来的。由此可见在silverlight的应该开发中它的重要性。

    您可以参考:http://msdn.microsoft.com/zh-cn/library/ms597502(VS.95).aspx

    以下是一个例子,实现通过自定义依赖属性去移动一个用户控件.

    1.新建一个silverlight项目,并添加一个用户控件。并命名为SilverlightControl1.

    2.以下是SilverlightControl1的依赖性性的定义:

     1:  public partial class SilverlightControl1 : UserControl
     2:    {
     3:        public SilverlightControl1()
     4:        {
     5:            InitializeComponent();
     6:        }
     7:  
     8:        public Point pp
     9:        {
    10:            get { return (Point)GetValue(myp); }
    11:            set { SetValue(myp,value); }
    12:        }
    13:  
    14:        public static readonly DependencyProperty myp = DependencyProperty.Register(
    15:            "pt", typeof(Point), typeof(SilverlightControl1),new PropertyMetadata(ppc));
    16:  
    17:        private static void ppc(DependencyObject d, DependencyPropertyChangedEventArgs e)
    18:        {
    19:            SilverlightControl1 s = (SilverlightControl1)d;
    20:            Point p = (Point)e.NewValue;
    21:            s.SetValue(Canvas.LeftProperty, p.X);
    22:            s.SetValue(Canvas.TopProperty, p.Y);
    23:        }
    24:    }

    以上我封装了一个字段作为保存这个用户控件的位置,然后通过Register方法注册一个名为:myp的依赖属性。

    其中:第一个参数是这个依赖属性的名字,第二个参数是这个属性的类型,第三个参数是定义这个属性的所有者(这里我希望是用户控件拥有这个属性,所以是SilverlightControl1),第四个参数是注册一个当值改变时我们要做的处理。

    在ppc方法中。我从新把新的值设计到这个控件的Left和Top属性。

    到此,自定义依赖属性完成。以下是使用的方法。

    2.在MainPage中:

     1:  public partial class MainPage : UserControl
     2:  {
     3:      SilverlightControl1 s;
     4:      public MainPage()
     5:      {
     6:          InitializeComponent();
     7:          s = new SilverlightControl1();
     8:          this.LayoutRoot.Children.Add(s);
     9:          this.KeyDown += new KeyEventHandler(MainPage_KeyDown);
    10:      }
    11:  
    12:      void MainPage_KeyDown(object sender, KeyEventArgs e)
    13:      {
    14:          s.SetValue(SilverlightControl1.myp, new Point(s.pp.X+1, s.pp.Y+1));
    15:      }
    16:  }

    在MainPage初始化完成后,我添加了一个SilverlightControl1并命名为s,然后我希望当用户按下任意键时这个用户控件的x,y座标都加一,所以我通过调用刚刚自定议的myp属性。s.SetValue(SilverlightControl1.myp, new Point(s.pp.X+1, s.pp.Y+1));达到效果。

  • 相关阅读:
    git命令的使用
    动态生成表格的每一行的操作按钮如何获取当前行的index
    js判断一些时间范围是否有重复时间段
    infiniband install driver
    python之pip install
    KVM :vnc 远程控制kvm创建虚拟机
    如何设置UNIX/Linux中新创建目录或文件的默认权限
    python获取报文参考代码
    JAVA命名规范
    oracle常用知识随笔
  • 原文地址:https://www.cnblogs.com/jacle169/p/2810760.html
Copyright © 2020-2023  润新知