zoukankan      html  css  js  c++  java
  • 十二、数据绑定——基本

    三种绑定模式: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属性

  • 相关阅读:
    npm 5.4.2 更新后就不能用了
    Node.js 被分叉出一个项目 — Ayo.js,肿么了
    页面缓存之Meta http-equiv属性详解
    Javascript 浮点计算问题分析与解决
    详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
    Cookie 基本操作
    HTML5上传图片预览
    location.href跳转测试
    ios中iframe的scroll滚动事件替代方法
    JS数组API
  • 原文地址:https://www.cnblogs.com/suinuaner/p/twlve.html
Copyright © 2011-2022 走看看