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

junwong 发布于 2012/03/05 16:55
阅读 429
收藏 0
  • 用户可以客户化主题
    • 例如可以选择亮或者灰暗的背景
    • 有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;

     

  源码下载


原文链接: http://www.cnblogs.com/LittleFeiHu/archive/2012/02/25/2367127.html
加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部