• Windows Phone7主题与样式以及数据绑定


    • 用户可以客户化主题
      • 例如可以选择亮或者灰暗的背景
      • 有10中主题颜色(accent colors)可供选择
    • silverlight可以自动检测到主题
      • 应用程序自动应用用户选择的主题
      • 开发人员可以客户化具体的控件并覆盖主题的方案
    • 对于Silverlight控件的样式,我们可以看到一张图:

      其中红色部分就是传说中的样式,而具体的样式定义是在

      这样一个路径下的一个ThemeResources.xaml,在同目录下的另一个文件System.Windows.xaml定义了silverlight for windows phone标准控件的模板

    • 数据绑定

          • 数据绑定为silverlight程序提供了一种简单的数据呈现与交互的方式,使得呈现与程序逻辑分离
          • 一旦建立绑定关系,UI和数据对象可以自动同步数据
          • 绑定方式:

            下面还是跟林永坚老师的例子一样,通过滑动Silder控件来改变TextBlock的文字大小;找到TextBlock的属性fontsize

          • 选择应用数据绑定之后就会弹出另一个选择对话框如图:

            选择Slider1就可以了,Path选择VAlue,这样一个简单的绑定就完成了,被绑定的元素的fontsize就绑定到了slider的value,数据绑定模式为OneTime

          • 数据绑定模式分三种:

            • One Time目标控件属性只更新一次,以后的会被忽略掉
            • One Way数据对象的值会被同步到目标控件的属性,但是目标控件属性的改变不会更新到数据对象中
            • Two Way目标控件的属性和数据对象的值相互更新
          • 继承one way和two way绑定的数据对象必须继承与InotifyPropertyChanger
        • 上面的数据绑定是绑定到一个UI元素上,并不是说只能绑定到UI上,因为可以绑定到所有的CLR对相声行,我们还可以绑定到自定义的类上,首先创建一个PostcodeClass,因为我们要用到双向绑定模式,所以需要继承借口INotifyPropertyChanged
          using System;
          using System.Net;
          using System.Windows;
          using System.Windows.Controls;
          using System.Windows.Documents;
          using System.Windows.Ink;
          using System.Windows.Input;
          using System.Windows.Media;
          using System.Windows.Media.Animation;
          using System.Windows.Shapes;
          using System.ComponentModel;
          
          namespace PostCodeManager
          {
              public class PostCodeClass:INotifyPropertyChanged
              {
          
                  public event PropertyChangedEventHandler PropertyChanged;
          
                  private int postcode;
                  public int PostCode
                  {
                      get
                      {
                          return postcode;
                      }
                      set
                      {
                          postcode = value;
                          address = PostCodeQuery.Instance.GetAddressByPostCode(postcode);
                          if (PropertyChanged != null)
                          {
                              PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Address"));
                          }
                      }
                  }
          
                  public string address = "木有找到";
                  public string Address
                  {
                      get
                      {
                          return address;
                      }
                      set
                      {
                          address = value;
                      }
                  }
              }
          }
          

          类 定义好了,接下来就是在Xaml文件里使用了,第一步添加名称空间,然后把这个类作为静态资源的形式引进来如下图:

       这样就可以使用了,使用方法如下:

       第一个红框说的是把TextBlock的文本属性绑定到PostcodeClass的PostCode属性上,而且Mode=TwoWay,第二个Textblock的文本属性绑定到PostcodeClass的Address属性上,这样就表示当这个TextBlock的Text发生改变的时候,它就会自动的把更改同步到他的数据对象里,数据对象就会把Address更新到第二个TextBlock;

      源码下载

  • 相关阅读:
    经典的Android案例项目源码
    技术面试(项目经验)
    从零开始搭建架构实施Android项目
    Android 开源项目第五篇——优秀个人和团体篇
    DOM,SAX,JDOM,DOM4J 四种方式解析xml
    Android小项目:记事本
    图像的读取、缩小、保存
    android中获取图片、获取图片像素、处理像素等基础知识
    图像透明化
    Notification应用的复习
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/2367127.html
Copyright © 2020-2023  润新知