黑马程序员c#学习7
来源:互联网 发布:渗透软件 编辑:程序博客网 时间:2024/05/20 23:36
1、数据绑定基础
数据绑定在一定程度上避免了在代码中直接操作控件,也是mvc等开发模式的基础
数据绑定的基本步骤
一、定义一个类和属性,用来存储我们需要绑定的值
二、new一个类的实例,给需要绑定数据的控件设定DataContext属性
三、在XAML中给控件使用Text={binding 属性名}的形式来绑定一个数据。
比如 我们有两个TextBox控件,需要绑定名字和年龄两个数据,步骤如下
一、定义一个类和相关属性,用来存储我们需要绑定的值
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public int gender{ get; set; }
}
二、new一个类的实例,给需要绑定数据的控件设定DataContext属性
Person p1 = new Person();//实例化一个类,并给对象属性赋值,
p1.Name = "AAA";
p1.Age= 18;
textBox1.DataContext=p1;//设定控件的数据上下文,
textBox2.DataContext = p1;//设定控件的数据上下文,
三、在XAML中给控件使用Text={binding 属性名}的形式来绑定一个数据
<TextBox Text="{Binding Name}" Name="textBox1" VerticalAlignment="Top" Width="120" />
<TextBox Text="{Binding Age}" Name="textBox2" VerticalAlignment="Top" Width="120" />
这样 ,我们就将person类的两个属性的值绑定到了两个控件上,
总结 ,控件的DataContext属性指明了我们需要绑定的数据来源,然后,控件的Text="{Binding Name}
语法告诉我们,绑定的是数据是来源与数据源的Name属性,通过这样设置,我们在代码中就避免了使用
textBox1.Text = p1.Name 这样的语句来直接操作控件。这样做还有一个好处就是,如果我们要修改
textBox1所要显示的数据,比如要显示 person类的gender属性,那么我们不必去代码中修改
textBox1.Text = p1.gender,而是直接在XAML文件中修改textBox1的绑定属性就行了,即
<TextBox Text="{Binding gender}" Name="textBox1" VerticalAlignment="Top" Width="120" />
2、INotifyPropertyChanged接口
通过实验我们看到,我们在代码中修改p1的Age属性,界面上的文本框的值并没有修改,但是 我们在界面上修改文本框的值,那么他所对应的对象的值会改变。
INotifyPropertyChanged接口的工作就是当我们在后台直接修改对象属性的时候,界面中也会同步更新修改后的属性。
我们需要注意,当我们要实现这种功能的时候,我们必须使我们的类实现这个接口,即person类的定义必须修改如下
public class Person : INotifyPropertyChanged //实现INotifyPropertyChanged接口
{
private string name;
private int age;
public string Name
{
get
{
return name;
}
set
{
this.name = value;
if ( PropertyChanged!= null ) //判断是否有监听程序
{
PropertyChanged (this,new PropertyChangedEventArgs("Name") );
}
}
}
public int Age
{
get
{
return age;
}
set
{
this.age = value;
if ( PropertyChanged != null )
{
PropertyChanged ( this, new PropertyChangedEventArgs ( "Age" ) );
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
由于我们需要监听属性的set方法,所以我们不能再使用自动属性了,必须手动的来书写我们的属性set方法,
if ( PropertyChanged!= null ) //判断是否有监听程序
{
PropertyChanged (this,new PropertyChangedEventArgs("Name") );
}
这段代码的意义可以理解为,当我们配置了一个监听程序来监听属性是否改变,如果配置了,当属性发生改变时,将通知界面,我的属性已经改变,请及时修改。
Windows Phone 7手机开发、.Net培训、期待与您交流!
- 黑马程序员c#学习7
- 黑马程序员 C#学习1
- 黑马程序员c#学习2
- 黑马程序员c#学习3
- 黑马程序员c#学习4
- 黑马程序员c#学习5
- 黑马程序员c#学习6
- 黑马程序员c#学习8
- 黑马程序员 c#学习9
- 黑马程序员 c#学习10
- 黑马程序员 c#学习11
- 黑马程序员 c#学习12
- 黑马程序员 c#学习13
- 黑马程序员c#学习14
- 黑马程序员c#学习15
- 黑马程序员c#学习16
- 黑马程序员C#学习笔记
- 黑马程序员学习7
- 杭电OJ——1173 采矿(水题)
- CGContext小记
- SimpleDateFormat使用详解
- 网页脚本发生错误 'jQuery'未定义解决办法
- 将eclipse中的web项目部署到本地的tomcat上
- 黑马程序员c#学习7
- Oprofile 移植到Android
- 在Entity Framework 中执行T-sql语句
- ehcache memcache redis 三大缓存男高音
- Java 终止线程
- Oracle分区之三:索引分区
- 有问题啊,怎么没有声音呢
- 资料重温——自定义对话框(来源于torryPages)
- 黑马程序员c#学习8