网上查找了资料,请教了几位牛人,无奈自己还是不能理解,只是大概意思会用,此处记录一下,做个备忘录。

数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程。 如果绑定具有正确设置并且数据提供正确通知,则当数据更改其值时,绑定到数据的元素会自动反映更改。 数据绑定可能还意味着如果元素中数据的外部表现形式发生更改,则基础数据可以自动更新以反映更改。

数据绑定 ItemsControl 示意图

正如此图中所示,若要将 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

http://bbs.wpmind.com/thread-1050-1-1.html

posted on 2012-01-04 17:41  asnow  阅读(972)  评论(0编辑  收藏  举报