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属性

  • 相关阅读:
    作业
    bash陷阱
    Hive
    工作小结
    Python脚本没有实时print信息
    Ubuntu下apt-get遇到Hash Sum Mismatch
    微信小程序要2017-01-19号发布!
    flex布局学习(四)flex色子布局练习
    flex布局学习(三)
    flex布局学习(二)
  • 原文地址:https://www.cnblogs.com/suinuaner/p/twlve.html
Copyright © 2011-2022 走看看