WPF 界面与后台双向数据绑定

    <Label x:Name="lbScore1" Content="{Binding Score1, Mode=TwoWay}" Width="200" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
            <Label x:Name="lbScore2" Content="{Binding Score2, Mode=TwoWay}"  Width="200" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
            <Label x:Name="lbScore3" Content="{Binding Score3, Mode=TwoWay}"  Width="200" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
            <Label x:Name="lbScore4" Content="{Binding Score4, Mode=TwoWay}"  Width="200" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
            <Label x:Name="lbScore5" Content="{Binding Score5, Mode=TwoWay}"  Width="200" FontSize="15" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>

1.UI界面里面的Label绑定数据,双向绑定用TwoWay,默认为OneWay,这儿必须加上Mode=TwoWay。

  public class UserScore : INotifyPropertyChanged
    {
        private string userName;
        private string score1;
        private string score2;
        private string score3;
        private string score4;
        private string score5;

        public string UserName
        {
            get
            {
                return userName;
            }
            set
            {
                this.userName = value;
            }
        }

        public string Score1
        {
            get
            {
                return score1;
            }
            set
            {
                this.score1 = value;//value转到定义,?其实就是public int age//这里暂时不知道这种机制

                if (PropertyChanged != null)//如果没有点击实现接口,就没有propertychanged这个成员
                {
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Score1));
                }
            }
        }
        public string Score2
        {
            get
            {
                return score2;
            }
            set
            {
                this.score2 = value;

                if (PropertyChanged != null)
                {
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Score2));
                }
            }
        }
        public string Score3
        {
            get
            {
                return score3;
            }
            set
            {
                this.score3 = value;

                if (PropertyChanged != null)
                {
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Score3));
                }
            }
        }
        public string Score4
        {
            get
            {
                return score4;
            }
            set
            {
                this.score4 = value;

                if (PropertyChanged != null)
                {
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Score4));
                }
            }
        }
        public string Score5
        {
            get
            {
                return score5;
            }
            set
            {
                this.score5 = value;

                if (PropertyChanged != null)
                {
                    this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(Score5));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

2.后台类代码:必须为INotifyPropertyChanged接口类, public class UserScore : INotifyPropertyChanged //在此要选择INotifyPropertyChanged,右键,解析得到命名空间,但还要增多一步:选择INotifyPropertyChanged,右键,实现接口。

     private void BindingData()
        {
            for (int i = 0; i < 10; i++)
            {
                ctlList[i].lbScore1.DataContext = scoreList[curPage * 10 + i];
                ctlList[i].lbScore2.DataContext = scoreList[curPage * 10 + i];
                ctlList[i].lbScore3.DataContext = scoreList[curPage * 10 + i];
                ctlList[i].lbScore4.DataContext = scoreList[curPage * 10 + i];
                ctlList[i].lbScore5.DataContext = scoreList[curPage * 10 + i];
            }
        }

3.cs后台添加数据绑定对象,scoreList链表里面存放的是UserScore接口类,ctlList存放的是控件。这样就实现了双向数据绑定,任何一方改变都会有更新,在通过数据库数据对接,就基本上实现了数据的双向通信。

时间: 2024-10-13 20:13:22

WPF 界面与后台双向数据绑定的相关文章

准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题

题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术的博客.做.Net开发块五年时间,个人没本事,没做出啥成绩.想象偶像梅球王,年龄都差不多,为啥差别就这么大.不甘平庸,想趁机会挑战下其他方面的技术,正好有一个机会转前段开发. 对于目前正在从事或者工作中会用到WPF技术开发的伙伴,此片内容不得不收藏,本片介绍的八个问题都是在WPF开发工作中经常使用到

AngularJS入门心得2——何为双向数据绑定

前言:谁说Test工作比较轻松,最近在熟悉几个case,差点没疯.最近又是断断续续的看我的AngularJS,总觉得自己还是没有入门,可能是自己欠前端的东西太多了,看不了几行代码就有几个常用函数不熟悉的.看过了大漠的视频,算是了解了AngularJS的一些优良特性.后来准备投身<AngularJS权威教程>,跟着它走,可是一来可能自己道行不够,二来,个人觉得这本书翻译的有些生硬以及一些瑕疵,比如: (1)9.2节:在指令中适用自作用域 (2)9.2节:在指令中适用自作用域 当然,以上都是一些瑕

双向数据绑定和单项数据绑定的认识

参考文章: https://segmentfault.com/q/1010000002511449/a-1020000002514653 https://www.zhihu.com/question/49964363/answer/136022879 单向数据绑定:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面. 单向数据绑定缺点:HTML代码一旦生成完以后,就没有办法再变了,如果有新的数据来了,那就必须把之前的HT

angularjs学习笔记--主html&amp;template html&amp;module&amp;template js、模块、控制器、双向数据绑定、过滤器

// Register the `phoneList` component on the `phoneList` module, angular. module('phoneList'). component('phoneList', {...}); // Define the `phonecatApp` module angular.module('phonecatApp', [ // ...which depends on the `phoneList` module 'phoneList'

angular和vue双向数据绑定

angular和vue双向数据绑定的原理(重点是vue的双向绑定) 我在整理javascript高级程序设计的笔记的时候看到面向对象设计那章,讲到对象属性分为数据属性和访问器属性,我们平时用的js对象90%以上都只是用到数据属性;我们向来讲解下数据属性和访问器属性到底是什么? 数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值. 访问器属性:访问器属性不包含数据值;他们包含一对getter和setter函数在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值,在写

利刃 MVVMLight 3:双向数据绑定

上篇我们已经了解了MVVM的框架结构和运行原理.这里我们来看一下伟大的双向数据绑定. 说到双向绑定,大家比较熟悉的应该就是AngularJS了,几乎所有的AngularJS 系列教程的开篇几章都要涉及到,真的是很好用. 表达的效果很简单:就是在界面的操作对数据模型的修改能实时反映到数据:而数据的变更能实时展现到界面.即视图数据模型(ViewModel)和视图(View)之间的双向绑定和触发. 我们来操作一个试试看: 第一步:先写一个Model,里面包含我们需要的数据信息,代码如下: 1 ///

Angular之双向数据绑定

---恢复内容开始--- angular最初进入前端开发人员视野的时候,给人以不可磨灭的印象之一就是它的双向数据绑定的实现.本篇章会先介绍如何使用此功能,然后在深入解释它的双向绑定的机制是如何实现的. angular中的data-binding指的是模型models和视图views之间的自动同步.angular实现双向绑定后,会让你觉得数据模型是页面中数据唯一的真实来源.当model改变后,视图反映改变,反之亦然.通俗的说,所谓的双向数据绑定,无非就是从界面的操作能实时反映到数据,数据的变更能实

ionic 搜索双向数据绑定失效

1.用data对象存储变化的数据 js: $scope.data={}; $scope.data.keywords = ""; $scope.search = function(){ $state.go("search",{keywords:$scope.data.keywords}); } html: <ion-view view-title="Home" hide-nav-bar="true"> <ion

angularJs的指令系统和双向数据绑定

一.langularJs的指令系统 <!DOCTYPE HTML> <html ng-app><!--这种以ng开头的就是指令系统,初始化的一个指令,不仅可以加在html这个标签上,还可以加在下面任何标签中,加了这个指令的标签就能被解析--> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <titl