zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    016_笼统概述MapReduce执行流程结合wordcount程序
    015_[小插曲]看黄老师《炼数成金Hadoop应用开发实战案例》笔记
    014_HDFS存储架构、架构可靠性分析、副本放置策略、各组件之间的关系
    013_HDFS文件合并上传putmarge功能(类似于hadoop fs -getmerge)
    012_Eclipse中使用 HDFS URL API 事例介绍
    JQuery dataTable插件
    Json对象与Json字符串的转化、JSON字符串与Java对象的转换
    Maven 环境变量设置
    怎样给win7系统硬盘分区
    JDK安装与环境变量配置
  • 原文地址:https://www.cnblogs.com/xiaoleye/p/4843970.html
Copyright © 2011-2022 走看看