zoukankan      html  css  js  c++  java
  • DependencyProperty使用中的3个场景,讨论PropertyChangedCallback

    1:项目结构图

    image

    2:控件SilverlightControl1

    前台:

    image

    后台:

        public partial class SilverlightControl1 : UserControl
        {
            public SilverlightControl1()
            {
                InitializeComponent();
            }
    
            public static readonly DependencyProperty StudentProperty = DependencyProperty.Register("Student", typeof(Student), typeof(SilverlightControl1), new PropertyMetadata(new PropertyChangedCallback(xxx)));
    
            public Student Student
            {
                get
                {
                    return (Student)GetValue(StudentProperty);
                }
                set
                {
                    SetValue(StudentProperty, value);
                    
                }
            }
    
            static void xxx(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                MessageBox.Show("sss");
            }
        }

    3:调用方

    前台:

    image

    后台:

        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
            }
    
            Student student1 = new Student() { StudentName = "hzh" + DateTime.Now.ToFileTime(), Age = 99 };
            Student student2 = new Student() { StudentName = "lmj" + DateTime.Now.ToFileTime(), Age = 99 };
            Student student3 = new Student() { StudentName = "lh" + DateTime.Now.ToFileTime(), Age = 99 };
    
            //初始化
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                //采用非绑定机制
                uc1.Student = student1;
                //采用非绑定机制,对DataContext赋值
                uc2.DataContext = student2;
                //采用绑定机制
                uc3.DataContext = student3;
            }
    
            //改Model值
            private void Button_Click1(object sender, RoutedEventArgs e)
            {
                student1.StudentName = "lmj" + DateTime.Now.ToString();
                student1.Age = 90;
                student2.StudentName = "hzh" + DateTime.Now.ToString();
                student2.Age = 90;
                student3.StudentName = "hzh" + DateTime.Now.ToString();
                student3.Age = 90;
            }
    
            //更换Model
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                student1 = new Student() { StudentName = "hzh" + DateTime.Now.ToFileTime(), Age = 99 };
                student2 = new Student() { StudentName = "lmj" + DateTime.Now.ToFileTime(), Age = 99 };
                student3 = new Student() { StudentName = "lh" + DateTime.Now.ToFileTime(), Age = 99 };
            }
        }

    4:结论

    无论是第一种方式,还是第三种方式,都能触发PropertyChangedCallback,而如果调用采用第二种方式,则不会触发PropertyChangedCallback。

    源码:SilverlightApplication320110609.rar

  • 相关阅读:
    MFC中添加ToolTip提示框
    神经网络算法程序
    DOS命令大全(经典收藏)
    axure团队合作开发原型图
    POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
    了解你的家公家IP
    HDOJ 3518 Boring counting
    模板方法模式的房间改造-组合查询
    6最好的之一 HTML5/CSS3 演示(PPT)框架
    试想一下,在代码学习Swift!
  • 原文地址:https://www.cnblogs.com/luminji/p/2076330.html
Copyright © 2011-2022 走看看