• 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>
  • 相关阅读:
    MySQL Generic Binaries包和RPM包的区别?
    实体零售如何构建数据管理体系及未来方向
    python3 数据分析
    power designer 资料库表查询
    PowerDesigner 连接资料库
    电商数据分析的基本指标体系
    初中数学动点最值问题19大模型+例题详解
    初中数学全年级26个专题知识点精编汇总
    Python数据分析学习路径拆解及资源推荐
    十种常用的数据分析方法
  • 原文地址:https://www.cnblogs.com/xiaoleye/p/4843970.html
Copyright © 2020-2023  润新知