wpf风格的数据绑定------WPF

首先是静态类的绑定,,之后再写普通类的绑定

首先我有个静态类
public static class BaseColor { //当前全局颜色 private static IColor _PrevieColor= new Colors.ColorModel1(); public static IColor PrevieColor { get { return _PrevieColor; } set { _PrevieColor = value; SimulateNew("PrevieColor"); } } 可以这样绑定 Background="{Binding Source={x:Static cols:BaseColor.PrevieColor}

 

 

 

数据绑定,首先要有个对象。。。

 //反正规定继承并实现这个接口,具体为什么,网上的帖子和书上说的太绕口。。反正也记不得,不如不记
   
    class Person:INotifyPropertyChanged
    {
        string name;
        public string Name { 
            get {return this.name;}
            set { name = value; }
            }

        int age;
        public int Age 
        {
             get {return this.age;}
             set { age = value; }
        }

        //有参的构造函数
        public Person(string name,int age) 
        {
            this.name = name;
            this.age = age;
        }

        public Person();

        //接口里定的一个事件,意思是属性发生改变时
       public  event PropertyChangedEventHandler PropertyChanged;
        //用一个方法,来触发这个事件
        protected void Notify(string name)
        {
            if (PropertyChanged!=null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs(name));
            }
        }

    }

这个类很简单,总共两个属性和两个构造函数。。。。。那个事件可以不看,这边没有用到,懂事件的应该知道要怎么用

 

 

绑定数据,就一点要设置数据源。在wpf中,这个数据源可以在前台写,也可以在后台写。。。。。

但是,我觉得前台写死一个数据源没有必要,而且也不灵活。。所以不怎么感兴趣

 

下面是后台绑定数据源的方法,,,这里有两部分代码。。

前台:

<Window x:Class="mytest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525"
        xmlns:local="clr-namespace:mytest"
        >
     <!--上面这个local是自己定义的,,,但是后面的参数,是一个命名空间-->
    
    <!--注意以下所有标签的name属性,和binging-->
    <Grid Name="g1">
    <TextBox Name="but" Text="{Binding Path=Name}" Width="150" Height="30" Margin="11,104,355,186" />
    <TextBox Name="but1" Text="{Binding Path=Age}" Width="150" Height="30" Margin="11,10,357,280" />
    </Grid>

</Window>

后台:

  Person person = new Person("sssss", 13);
        public MainWindow()
        {
            InitializeComponent();
            this.but.DataContext = person;//只写这个,那么只有一个textbox被绑定值

            this.but1.DataContext = person;//只写这个,那么也只有一个textbox被绑定值

            this.g1.DataContext = person;//只写这个,两个textbox都会被设定值,因为Grid是两个textbox的父级标签,
                                        //在它上面设置数据源后,它的子级标签都可以享受数据源
              
         
        }

 

  当然也可以不需要后台:

   <TextBlock  Text="{Binding Path=s1}">
            <!--在xml中实例化一个类,避免了在后台绑定-->
            <TextBlock.DataContext>
                <local:MyClass></local:MyClass>
            </TextBlock.DataContext>
        </TextBlock>

 

posted on 2015-09-28 14:45  你的乐哥哥  阅读(437)  评论(0编辑  收藏  举报