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

  • 相关阅读:
    跳槽面试技巧记录
    看了多篇2019年的面经后的个人总结
    TypeScript躬行记(8)——装饰器
    TypeScript躬行记(7)——命名空间
    TypeScript躬行记(6)——高级类型
    TypeScript躬行记(5)——类型兼容性
    TypeScript躬行记(4)——泛型
    TypeScript躬行记(3)——类
    TypeScript躬行记(2)——接口
    Error, some other host already uses address 192.168.0.202错误解决方法
  • 原文地址:https://www.cnblogs.com/luminji/p/2076330.html
Copyright © 2011-2022 走看看