网上查找了资料,请教了几位牛人,无奈自己还是不能理解,只是大概意思会用,此处记录一下,做个备忘录。
数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程。 如果绑定具有正确设置并且数据提供正确通知,则当数据更改其值时,绑定到数据的元素会自动反映更改。 数据绑定可能还意味着如果元素中数据的外部表现形式发生更改,则基础数据可以自动更新以反映更改。
正如此图中所示,若要将 ItemsControl 绑定到集合对象,应使用 ItemsSource 属性。 可以将 ItemsSource 属性视为 ItemsControl 的内容。 请注意,绑定是 OneWay,因为 ItemsSource 属性默认情况下支持 OneWay 绑定。
listBox这类列表控件一般都需要使用集合绑定;类似textBlock控件的单一属性一般不需要数据绑定,可以直接赋值。
1)绑定数据 单个属性有变化要通知UI变化的话可以用NotifyPropertyChanged通知UI。
public class AllBinding : INotifyPropertyChanged
{
//PropertyChanged(this,……只是告诉系统改值,但没把最新的值告诉系统,因此系统在修改ui数据的时候通过get去拿最新的数据么
private bool _checkState { set; get; }
public bool checkState
{
set
{
if (_checkState != value)
{
_checkState = value;
NotifyPropertyChanged("checkState");
}
}
get { return _checkState; }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
CheckBox的IsChecked="{Binding checkState}"先会找到这个CheckBox,然后通过checkState的get拿到值,然后赋值给CheckBox。
2)集合绑定:ObservableCollection在数据源作为列表存在;数据源类就是UI需要什么数据,就加什么数据;用ObservableCollection系统会优化列表性能
private ObservableCollection<listBinding> _listBinding;
public ObservableCollection<listBinding> listBindings
{
get
{
if (_listBinding == null)
_listBinding = new ObservableCollection<listBinding>();
return _listBinding;
}
}
xaml中listBox中的各项控件绑定数据源的属性,listBox的数据源绑定方式:
1)xaml中listBox的ItemsSource={Binding A},则代码可以以页面的数据进行绑定 this.DataContext = viewModel(此时viewModel应该包含页面所有绑定控件的数据源);
2)xaml中listBox的ItemsSource={Binding},则代码中数据进行绑定 this.DataContext = A直接指定具体绑定的数据源;
3)xaml中listBox中没有指定数据源,代码中listBox.ItemsSource =A。
实在不知道怎么写,写的有点乱,内容不多,供翻阅查看,数据绑定要用到的大概就是这几个模块。如果还存在误解,希望得到指点~
数据绑定参考: http://msdn.microsoft.com/zh-cn/library/ms752347.aspx