wpf学习笔记-更新数据源
2008-05-31 12:06
344 查看
此示例基于 wpf学习笔记-指定数据源
1.让对象实现INotifyPropertyChanged接口,以便属性更改发出通知
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
public class Person : INotifyPropertyChanged
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
public Person()
![](http://www.cnblogs.com/Images/dot.gif)
{ }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public Person(string name, int age)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.name = name;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.age = age;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string name;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string Name
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
get
![](http://www.cnblogs.com/Images/dot.gif)
{ return this.name; }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
set
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.name = value;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OnPropertyChanged("Name");
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int age;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public int Age
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
get
![](http://www.cnblogs.com/Images/dot.gif)
{ return this.age; }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
set
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.age = value;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OnPropertyChanged("Age");
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public event PropertyChangedEventHandler PropertyChanged;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void OnPropertyChanged(string propName)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (this.PropertyChanged != null)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
2.xaml(略去布局)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<Label Content="{Binding Name}"></Label>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<Label Content="{Binding Age}"></Label>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TextBox Text="{Binding Path=Name, Source={StaticResource Tom}}" />
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TextBox Text="{Binding Age}"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
这里又出现了新的绑定语法,{Binding Path=Age}等价{Binding Age}
3.目标:
当更改目标属性的时候,更新数据源(更新以后则绑定的对象也发生变化,如更改TextBox的Text则Label的Content也发生变化)
4.设置更新数据源执行时间
通过设置Binding对象的UpdateSourceTrigger 来确定执行时间.
![](http://images.cnblogs.com/cnblogs_com/clingingboy/wpf/bind/bind3.jpg)
根据需要设置UpdateSourceTrigger 属性
完
1.让对象实现INotifyPropertyChanged接口,以便属性更改发出通知
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
public class Person : INotifyPropertyChanged
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
public Person()
![](http://www.cnblogs.com/Images/dot.gif)
{ }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public Person(string name, int age)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.name = name;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.age = age;
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string name;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public string Name
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
get
![](http://www.cnblogs.com/Images/dot.gif)
{ return this.name; }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
set
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.name = value;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OnPropertyChanged("Name");
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int age;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public int Age
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
get
![](http://www.cnblogs.com/Images/dot.gif)
{ return this.age; }
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
set
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
this.age = value;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OnPropertyChanged("Age");
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
public event PropertyChangedEventHandler PropertyChanged;
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void OnPropertyChanged(string propName)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (this.PropertyChanged != null)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
2.xaml(略去布局)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<Label Content="{Binding Name}"></Label>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<Label Content="{Binding Age}"></Label>
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TextBox Text="{Binding Path=Name, Source={StaticResource Tom}}" />
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<TextBox Text="{Binding Age}"
![](http://www.cnblogs.com/Images/OutliningIndicators/None.gif)
/>
这里又出现了新的绑定语法,{Binding Path=Age}等价{Binding Age}
3.目标:
当更改目标属性的时候,更新数据源(更新以后则绑定的对象也发生变化,如更改TextBox的Text则Label的Content也发生变化)
4.设置更新数据源执行时间
通过设置Binding对象的UpdateSourceTrigger 来确定执行时间.
![](http://images.cnblogs.com/cnblogs_com/clingingboy/wpf/bind/bind3.jpg)
根据需要设置UpdateSourceTrigger 属性
完
相关文章推荐
- wpf学习笔记-更新数据源
- WPF学习笔记——编辑DataGrid单元格并实时更新到数据库
- WPF and Silverlight 学习笔记(二十三):绑定集合数据源
- WPF and Silverlight 学习笔记(二十三):绑定集合数据源
- WPF and Silverlight 学习笔记(二十四):数据源提供器(DataProvider)
- WPF学习笔记——ListBox用ItemsSource绑定数据源
- wpf学习笔记 NotifyPropertyChanged实现数据变化自动更新UI
- WPF学习笔记——ListBox用ItemsSource绑定数据源
- wpf学习笔记-指定数据源
- WPF学习笔记——编辑DataGrid单元格并实时更新到数据库
- WPF学习笔记——ListBox用ItemsSource绑定数据源
- wpf学习笔记-指定数据源
- python学习笔记(二)更新中
- LaTeX学习笔记[不断更新中]
- C++ Primer 学习笔记(持续更新......)
- 【转】ArcGIS API for Silverlight/WPF 2.1学习笔记(二)
- 【Git学习笔记】用git pull取回远程仓库某个分支的更新,再与本地的指定分支自动merge
- [学习笔记]VS2013中编译时XML文档更新到debug中
- WPF and Silverlight 学习笔记(二):WPF和Silverlight概述
- WPF and Silverlight 学习笔记(五):WPF应用程序管理