青岛有哪些做网站的公司,住房建设厅网站,江苏宿迁房产网,移动应用开发实训报告这节开始分几期来讲一下WPF中Binding的相关用法#xff0c;本节主要讲使用Binding进行数据绑定。Binding的作用在WinForm中#xff0c;我们要想对控件赋值#xff0c;需要在后台代码中拿到控件对象进行操作#xff0c;这种赋值形式#xff0c;从根本上是无法实现界面与逻辑… 这节开始分几期来讲一下WPF中Binding的相关用法本节主要讲使用Binding进行数据绑定。Binding的作用 在WinForm中我们要想对控件赋值需要在后台代码中拿到控件对象进行操作这种赋值形式从根本上是无法实现界面与逻辑分离的。在WPF中微软引入了Binding对象通过Binding我们可以直接将控件与数据做绑定在后台不用拿到控件对象直接操作数据源系统会自动监听数据源的变化实时的更新到控件上相反的用户改变控件的值也会实时更新到后台数据源这也就是我们之前所说的WPF天生支持MVVM模式。数据绑定 下面将通过一个实例来讲解如何使用Binding进行数据绑定具体内容如下 点击按钮“展示数据”时将数据显示在上方文本框中。 后台代码如下 我使用GetData方法模拟数据返回1-10的随机数上图所示的形式是使用控件对象直接赋值的方式。 另外您可能已经注意到了我实现了一个System.ComponentModel命名空间下的INotifyPropertyChanged接口这个接口是实现数据绑定后台必须要继承的接口从它的字面意思我们也可以知道这个接口是用于通知属性已经改变这个接口内部有一个PropertyChanged的事件我们需要在每个要绑定的属性的set中调用它就如上图Data属性中this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Data));这句代码它的意思就是通知系统我的Data属性改变了系统收到这个通知会及时找到跟这个属性Binding的前台控件及时的更新值下面演示使用Binding进行数据绑定publicMainWindowBase()
{InitializeComponent();Binding binding new Binding();binding.Source this;binding.Path new PropertyPath(Data);BindingOperations.SetBinding(this.text_show, TextBox.TextProperty, binding);
}
private void Button_Click(object sender, RoutedEventArgs e)
{Data GetData();
} 我们需要在构造器中先设置绑定新建Binding对象设置它的源和路径意思就是去哪个地方找哪个属性最后通过BindingOperations.SetBinding这个方法将绑定设置到控件这样我在Button的事件处理器中只管对Data赋值系统会自动更新到控件这也是WPF中的数据驱动控件。 另外Binding对象还有个Mode属性它是BindingMode枚举枚举内容如下图 OneWay:指示数据只从源到控件用户手动改变控件的值系统不会更新到源它跟OneWayToSource是相反的后者是数据只从控件到源 TwoWay:则是数据可以在控件和源双方流通 Default:默认值一般是TwoWay; OneTime:顾名思义数据只会流通一次; SetBinding方法中有三个参数第一个和最后一个参数是要绑定的控件对象和Bingding对象第二个参数是控件对象的依赖属性指示绑定的数据要赋值给控件的哪个属性此处要说明一下只有控件的依赖属性才可以使用数据绑定关于依赖属性会在后续的章节解释。 运行起来点击按钮后效果如下 在实际开发中我们一般会将绑定的这块代码写在通过XAML标记扩展的形式写在Xaml页面中那么构造器中关于绑定的代码就可以删掉改为如下代码public MainWindowBase()
{InitializeComponent();this.DataContext this;//Binding binding new Binding();//binding.Source this; //binding.Path new PropertyPath(Data);//BindingOperations.SetBinding(this.text_show, TextBox.TextProperty, binding);
}
TextBox x:Nametext_show Text{Binding PathData} /在前台使用标记扩展绑定数据需要后台配置前台的数据上下文就是this.DataContext对象。 标记扩展中使用Binding命令指示数据绑定Path属性是默认值可以省略Source也可以省略默认DataContext对象这样就极大的简化了代码。 总结起来使用Binding的流程是 1.实现INotifyPropertyChanged接口 2.为需要绑定的属性的set块添加PropertyChanged事件通知 3.在构造器(不一定是构造器可以是任何一个早于您使用数据绑定情景之前的方法中)中绑定数据源 或者 使用XAMl的标记扩展绑定数据源本节到此结束...