前面两节介绍了通过把CLR对象指定赋值给Binding . Source或者把CLR对象的名称赋值给Binding.ElementName而实现将单个CLR对象指定为Binding的Source的方法。下面我们介绍没有Source的Binding,将DataContext作为Binding的源的方法。
DataContext,顾名思义就是数据上下文,它被定义在FrameworkElement类里,这个类是WPF控件的基类,包括所有的WPF控件和容器都含有这个属性。我们又知道,WPF的UI布局是树形结构,树的每个节点都是控件,就是说每个节点元素都有DataContext。
当一个Binding只知道自己的Path而不知道自己的Source时,它会沿着UI树一级一级的向上查找,路过每个节点时都会查看这个节点的DataContext是否具有Path所指定的属性,知道找到为止。如果到了树的根部,还没找到那就是没有Source。

为了验证这一点,我们还是先定义个Student类:

public class Student
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

然后再XAML文件中添加如下代码: <local:Student Id="1" Name="Hyman" Age="29"/> </Grid.DataContext> <TextBox Height="23" HorizontalAlignment="Left" Margin="184,59,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="{Binding Path=Id}"/> <TextBox Height="23" HorizontalAlignment="Left" Margin="184,105,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="{Binding Path=Name}"/> <TextBox Height="23" HorizontalAlignment="Left" Margin="184,160,0,0" Name="textBox3" VerticalAlignment="Top" Width="120" Text="{Binding Path=Age}"/> <TextBlock Height="23" HorizontalAlignment="Left" Margin="114,62,0,0" Name="textBlock1" Text="ID:" VerticalAlignment="Top" /> <TextBlock Height="23" HorizontalAlignment="Left" Margin="114,160,0,0" Name="textBlock2" Text="Name:êo" VerticalAlignment="Top" /> <TextBlock Height="23" HorizontalAlignment="Left" Margin="114,105,0,0" Name="textBlock3" Text="Age:êo" VerticalAlignment="Top" /> </Grid>

另外为了实现这一效果,我们也可以在cs代码中定义一个Student对象,然后将其赋值给grid的DataContext。

 Student student = new Student()
                Id = 1,
                Name = "Hyman",
                Age = 29
            this.grid.DataContext = student;
                    前面两节介绍了通过把CLR对象指定赋值给Binding . Source或者把CLR对象的名称赋值给Binding.ElementName而实现将单个CLR对象指定为Binding的Source的方法。下面我们介绍没有Source的Binding,将DataContext作为Binding的源的方法。DataContext,顾名思义就是数据上下文,它被定义在FrameworkElement类里
				
1)在FrameworkElement类下有两个重要的属性。利用这两个属性,可以实现UI数据直接与后台的类进行绑定2)前端UI界面属性值等动态与后台绑定的方式有多种,此处列出后台设置DataContext以及前端设置DataContext的两种方式,以及数据双向绑定的最佳实践纯前端的方式好处在于,编译一下,就可以在设计阶段看到效果。 1)先定义好我们的类 2)在前端按照步骤引入 后台设置DataContext 在设计阶段是看不到效果的,但是灵活性更高,属性值不用写死 1)定义一个类 2)在当前窗口加载时,进
UI元素树的每一个结点都有DataContext,当Binding只知道自己的path ,而不知道source时,会沿着 UI元素树一路的向树根部找过去,路过节点,比较结点的DataContext是否具有Path所指定的属性,有的话,把对应的节点对象作为自己的source C# class
单个CLR类型对象指定为BindingSource,方法有两个—把对象赋值给binding.Source属性或者把对象的Name赋值给Binding.ElementName。DataContext属性被定义在FrameworkElement类里,这个类是WPF的基类,这意味着所有WPF控件都具备这个属性。 WPF的UI布局是树形结构,这颗树的每个结点都是控件,由此,得出另外一个结论,在UI元素树的每个结点都有DataContext。 这点非常重要,因为当一个Binding只知道自己的Path而...
Binding基础 Binding在韩语绑定,实际上引文动词Bind在转化为名词Binding后,除了原有的绑定的意思外,还引申除了“关联”和“建联”的含义。也就是说Binding更注重表达它是一种像桥梁一样的关联关系。WPF,正式在这段桥梁上我们有机会为往来流通的数据做很多事情。 如果把Binding比作数据的桥梁,那么它的两端分别是Binding的源(Source)和目标(Targ
前面的例子都是将CLR类型的对象指定为BindingSource使用了两种方法——把对象赋值个Binding.Source或把对象的Name赋值给Binding.ElementName。 DataContext属性被定义在FrameworkElement类,这个类是WPF控件的基类,意味着所有WPF空间都具备这个属性。WPF的UI布局是树形结构,每个节点都是空间,由此可以推出另一个结论——
对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 a9863442698: 只要装上wps,就不出问题了 对 IID 为“{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 加载类型库/DLL 时出错。 a9863442698: 卧槽,竟然行了