WPF 类与类之间的访问方式

项目程序集如下

WPF 类与类之间的访问方式

Class1类如下

   public class Class1
    {
        public int a,b,c;
        public void sum()
        {
            c = a + b;
        }
    }

MainWindow类如下

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }

项目编译完后,会在程序内存中生产两个实体类Class1和MainWindow

WPF 类与类之间的访问方式

 

 

 

 

 当我们在MianWindow类中实例化一个Class1类时

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Class1 myClass1 = new Class1();//实例化一个Class1
            myClass1.a = 1;
            myClass1.b = 2;
            myClass1.sum();
        }
    }

此时内存中是这样的

WPF 类与类之间的访问方式

 

 在MianWindow中操作实例化myClass1的成员a,b和方法sum,不会对实体类Class1有任何影响。如果想在实体类MainWindow中访问操作实体类Class1的成员和方法,那有两种方法。

第一种:DataContext

在MainWindow类中这样写

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            var myClass = (Class1)DataContext;
            myClass.a = 1;//操作实体类Class1中的成员a
            myClass.b = 2;//操作实体类Class1中的成员b
            myClass.sum();//操作实体类Class1中的方法sum
        }
    }

这个myClass就是实体类Class1,在MainWindow中操作myClass就是在操作实体类Class1

内存变化如下

WPF 类与类之间的访问方式

第二种:static

在实体类的成员和方法前加上static,使其变成静态成员和方法,如下

   public class Class1
    {
        static public int a,b,c;
        static public void sum()
        {
            c = a + b;
        }
    }

在MainWindow类中访问操作静态类成员、方法直接用类.的方式

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Class1.a = 1;//操作实体类Class1中的成员a
            Class1.b = 2;//操作实体类Class1中的成员b
            Class1.sum();//操作实体类Class1中的方法sum
        }
    }

Class1.a = 1;Class1.b = 2;Class1.sum();这三行语句实在MainWindow类访问操作实体类Class1,MainWindow类中没有任何成员和方法。

为什么我们要在MainWindow类中去操作实体类呢?因为当WPF项目越来越大时,不能再只用一个前台xaml和对应一个后台cs文件来管理了,此时我们需要用到MVVM,在xaml中绑定到其他类,其他各个类之间也需要访问联系。所以操作实体类是必不可少的。

 

上一篇:Qt调用工业相机之映美精相机


下一篇:【工具】datagrip的SQL查询语句存放的位置