(八)Binding
来源:互联网 发布:java url连接 编辑:程序博客网 时间:2024/06/05 04:10
下面进行介绍一个Binding的最简单用法:
我们首先创建一个Students类包含一个学生姓名的列表的属性。这个类的实例将会作为数据源.
class Students{ private List<string> name = new List<string>(); public List<string> Name = public List<string> Name { get { return name; } set { name = value;} }}
现在这个Students类的Name属性是普通属性,无法通知Binding,所以Binding也就无法把属性值的变化传给UI元素,下面我们在属性的Set方法中激发一个PropertyChanged事件,这个事件不需要我们实现,我们需要实现INotifyPropertyChanged接口:
class Students : INotifyPropertyChanged { private List<string> name = new List<string>(); public List<string> Name { get { return name; } set { name = value; if (PropertyChanged != null) { this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name")); } } } public event PropertyChangedEventHandler PropertyChanged; }
这时当Name属性的值发生变化时PropertyCharged事件就会被激发,bingding接收到这个事件后发现事件告诉他”Name”属性的值发生变化,于是Binding就会通知目标端的UI元素显示新的值。
下面给出完整的一个小例子:
XAML:
<Grid> <StackPanel> <ComboBox x:Name="comboBox" Margin="5"/> <Button Margin="5" Click="Button_Click">Add Age</Button> </StackPanel></Grid>
对应的cs代码
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //重点在这进行binding this.comboBox.SetBinding(ComboBox.ItemsSourceProperty, new Binding("Name") {Source = stu}); } class Students:INotifyPropertyChanged { private List<string> name = new List<string>(); public List<string> Name { get { return name; } set { name = value; if (PropertyChanged != null) { this.PropertyChanged.Invoke(this,new PropertyChangedEventArgs("Name")); } } } public event PropertyChangedEventHandler PropertyChanged; } private Students stu = new Students(); List<string> names = new List<string>(); private void Button_Click(object sender, RoutedEventArgs e) { names.Add("Hello"); names.Add("World"); names.Add("Binding"); names.Add("\n"); stu.Name = null; stu.Name = names; } }
上面有注释那句代码
this.comboBox.SetBinding(ComboBox.ItemsSourceProperty, new Binding("Name") {Source = stu});
我们进行分解(下面代码等价与上面那句):
Binding binding = new Binding();//定义bindgbinding.Source = stu;//指定实例数据源binding.Path = new PropertyPath("Name");//指定访问路径即绑定哪一个属性。BindingOperations.SetBinding(this.comboBox,ComboBox.ItemsSourceProperty,binding);//把数据源与目标连在一起。
结果:
阅读全文
0 0
- (八)Binding
- WPF中的binding(八)- 使用ObjectDataProvider对象作为Binding的Source
- 数据绑定(八)使用Binding的RelativeSource
- WPF Binding相关的一些常见方式总结(八)
- Google Data Binding Library 谷歌官方数据绑定库(八)转换
- Binding(一)——Binding基础
- WPF中的binding(十二)- 多路Binding
- WPF(Binding)
- WCF 绑定(Binding)
- 数据绑定(Binding)
- Binding应用(一)
- Binding
- binding
- Binding
- Binding
- 静态绑定(static-binding) 动态绑定(dynamic-binding)
- Binding(二)——Binding的路径
- WCF系列:Binding模型 绑定元素(Binding Element)
- 每个UX设计师都应该会的10项技能
- ble 广播数据格式细致分析
- Tomcat访问本地文件夹中的文件
- SQL查询的艺术学习笔记--复杂查询
- JavaWeb之Listener监听器
- (八)Binding
- basic setting on Pycharm
- Java Collection 与 Collections的区别
- web开发第八课model
- 免费申请Firefly-RK3288开源板
- 现在做淘客晚了吗?自媒体淘客告诉你答案
- css3-flex(下)
- Laravel框架一:原理机制篇
- 干货 | Active Learning: 一个降低深度学习时间_空间_经济成本的解决方案