黑马程序员(8)——数据绑定、INotifypropertyChange、数据上下文datacontext、listBox、datagrid

Windows Phone 7手机开发.Net培训、期待与您交流!



01数据绑定
数据上下文
声明一个person类(为了尽量不操作空间)》在后台给person类new对象p1》给p1赋初值》把两个空间的数据上下文都设置为这个对象p1》空间中把要绑定的属性设定Text="{Binding Name}" 






02INotifypropertyChange
由于普通对象没有通知我的属性变量这么一种机制,所以改变对象的属性界面不会变,但是界面改变是有textChanged之类的事件的,所以界面可以同步修改到对象。
INotifypropertyChange是net内置的接口,数据绑定会检测Datecontext是否是实现INotifypropertyChange如果实现了,就会监听PropertyChange得知属性变化
如果要求后台对象的值发生改变界面跟着变,则需要实现INotifypropertyChange接口,并且在属性值变化后触发时间。
 private int age;
        public int Age
        {
            get
            {
                return age;


            }
            set
            {
                this.age = value;
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Age"));
                }
            }
        }
如果后台对象的值不会变,则没必要实现INotifypropertyChange。






 
03数据上下文datacontext
//txtName.DataContext = p1;
//txtAge.DataContext = p1;
//txtheight.DataContext = p1;
//cbGender.DataContext = p1;
  以上可以不一条条写出
grid1.DataContext = p1;//子控件以及所有后代控件都默认继承父控件的
txtName.DataContext = p2;//子控件可以修改








04listBox
 
 lbPersons.ItemsSource = list;//listbox的显示集合。不是datacontext,默认是吧对象tostring来显示成一项,要是想显示某一个属性值,就要加DisplayMemberPath="Name" SelectedValuePath="Age"等来显示
<ListBox DisplayMemberPath="Name"……设置在listbox中显示的哪一个属性,如果是Age就显示年龄
object selectedItem = lbPersons.SelectedItem;//获得选中行对应的对象
bject selectedValue = lbPersons.SelectedValue;//获得选中行对应的对象的SelectedValuePath对应的属性值
     


05datagrid
 <DataGrid.Columns>自定义列
<DataGrid Name="dg1" AutoGenerateColumns="False"……自动生成列,默认true
 IsReadOnly="False" ……禁止自动编辑。
<DataGridTextColumn x:Name="colClassName"……没有Name属性的时候可以自己添加。
<DataGridTextColumn Binding=""……表示它本身绑定到哪里













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值