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));达到效果。