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;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端