zoukankan      html  css  js  c++  java
  • UWP应用中数据绑定的妙用(c#)

    值新冠肺炎区间,不能出门,也不想出门,在家里看了一下C#的在windows10下开发应用的书(《深入浅出:Windows10通用应用开发2》。感觉数据绑定跟嵌入式编程中用手法完全不同,特别写下了加强记忆。

    运行在window10 的商店应用程序称之为UWP, 开发UWP比较常用的是C#+XMAL, 面对对象的编程,所以将数据(Data),显示(View),模型(Model),在设计上就显示比较重要,这个也是此前没有遇到过的程序问题。比如对一个按钮的点击次数进行统计,通常的办法是:

    Click()

    {

      count++;

            txexblock.text = count.toString(); // 这种设计跟嵌入式的中断写一长串差不多,今天还有另外的方法,应该说比这个看起来要美很多。但代码多了,在这个例子中有点画蛇添足的感觉

    }

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------

    使用了数据绑定后主要代码如下:


    public class MyData : INotifyPropertyChanged
    {
    private string count;

     


    public string Count
    {
    set { this.count = value; OnPropertyChanged("Count"); }
    get { return this.count; }
    }

    public MyData(string s)
    {
    count = s;
    }

     

    // 通知接口的实现,一旦有数据变化,通过它去更新界面。
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string t)
    {
    if (PropertyChanged != null)
    {
    PropertyChanged(this, new PropertyChangedEventArgs(t));
    }
    }
    }

     

    public MyData myData = new MyData("UN CLICK");

    private int i = 0;

    public MainPage()
    {
    this.InitializeComponent();
    this.DataContext = myData;
    }

    private void BtnButton_Click(object sender, RoutedEventArgs e)
    {
    myData.Count = string.Format("CLICK,{0}", i++); //  点击计算,并没有显示的代码!
    }

     

    //以上的代码完全看不出在什么地方显示,因为绑定是在xmal文件进行关联的。

    <TextBlock Text="{Binding Count,Mode=OneWay}" Margin="12,100,0,28" Foreground="Red"  FontSize="50"/>

    当然,这肯定归功于windows系统才能实现,不过确定是好纯粹的数据与显示分离, 很羡慕那些写win APP的程序猿, 有好的工具和好的思想可以使用。

    // 2020.2.18

    // Shenzhen

  • 相关阅读:
    动态规划算法
    MapReduce学习笔记(4)
    MapReduce学习笔记(3)
    MapReduce学习笔记(2)
    Intellij IDEA output 中文乱码
    Spring实例化bean的三种方式
    Spring框架捕获所有URL的请求的处理方案
    异常解决:Mapped Statements collection does not contain value for …
    Java包 package 的命名规范, 命名规则
    拦截器 Filter : js、css、jpg、png等静态资源不被拦截解决方案
  • 原文地址:https://www.cnblogs.com/newbit/p/12327353.html
Copyright © 2011-2022 走看看