项目程序集如下
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
当我们在MianWindow类中实例化一个Class1类时
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Class1 myClass1 = new Class1();//实例化一个Class1 myClass1.a = 1; myClass1.b = 2; myClass1.sum(); } }
此时内存中是这样的
在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
内存变化如下
第二种: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中绑定到其他类,其他各个类之间也需要访问联系。所以操作实体类是必不可少的。