博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十二、数据绑定——基本
阅读量:5096 次
发布时间:2019-06-13

本文共 1616 字,大约阅读时间需要 5 分钟。

三种绑定模式:one time(一次性绑定)  oneway(单向绑定,model变 Ui变;Ui变  model不变) twoway(双向绑定,model变 Ui变;Ui变  model变)

两个控件之间的简单绑定

第一步:在xaml文件中

在需要绑定的控件中加入:此控件的属性=“{Binding  Path=另一个控件的属性,Mode=One Time/OneWay/TwoWay,ElementName=控件的名字}”

例如: Text="{Binding Path=Value,Mode=TwoWay,ElementName=slider1}"

对象的绑定

第一步:封装一个对象

//实现一个借口,监听发生改变

public class Person:INotifyPropertyChanged 

    {
        private string _name;
        public string Name
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value; //值发生改变
                //如果值(自己)发生改变,则发出事件,让绑定的控件改变
                if (PropertyChanged != null)
                {
                    //new PropertyChangedEventArgs("Name"),说明那个属性发生变化
                    PropertyChanged(this,new PropertyChangedEventArgs("Name") );
                }
            }
        }
        private int _age;
        public int Age
        {
            get
            {
                return _age;
            }
            set
            {
                _age = value;
                if (PropertyChanged != null)
                {
                    //new PropertyChangedEventArgs("Name"),说明那个属性发生变化
                    PropertyChanged(this, new PropertyChangedEventArgs("Age"));
                }
            }
        }
        //监听事件:告知对方自己发生变化,使对方做出改变
       public  event PropertyChangedEventHandler  PropertyChanged;
      
    }

第二步:在.cs文件中

1、声明对象:private Person p = new Person() {Name="dfdffdfd",Age=23 };

2、在OnNavigatedTo方法中,加上 

            if (e.NavigationMode == NavigationMode.New)
            {
                //首次进入此页面,此时可以加载数据
                txt1.DataContext = p;

              //子控件会自动继承父控件的数据源。

             //如果某个控件的间接父控件(爷爷控件)和直接父控件都定义了数据源,则此控件的数据源使用直接父控件的数据源

              // this.DataContext = p;

            }

3、响应事件

  private void Button_Click_1(object sender, RoutedEventArgs e)        

{            

          MessageDialog msg = new MessageDialog(p.Name);           

           msg.ShowAsync();

        }

        private void Button_Click_2(object sender, RoutedEventArgs e)       

  {            

         p.Name = DateTime.Now.Millisecond.ToString();        

}

第三步:在XAML文件中绑定

 Text="{Binding Name ,Mode=TwoWay}"  //将一个控件的text属性  绑定到数据源的  Name属性

 

 

转载于:https://www.cnblogs.com/suinuaner/archive/2012/12/06/twlve.html

你可能感兴趣的文章
前端html
查看>>
网络编程
查看>>
关于“设计模式”和“设计程序语言”的一些闲话
查看>>
(一二九)获取文件的MineType、利用SSZipArchive进行压缩解压
查看>>
python学习4 常用内置模块
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
ResolveUrl的用法
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
【转载】基于vw等viewport视区相对单位的响应式排版和布局
查看>>
<转>关于MFC的多线程类 CSemaphore,CMutex,CCriticalSection,CEvent
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>