WPF笔记(1.8 资源与映射)——Hello,WPF!
2015-11-13 17:23
357 查看
原文:WPF笔记(1.8 资源与映射)——Hello,WPF!终于,看明白了,已经是凌晨1:39分。
这本书这一节写得实在是不好,一个local搞得我糊里糊涂,于是,准备按照他的思路,按照我的理解,改写一遍,包括源代码。
首先,这句话WPF新版本已经不用了:
<?Mapping XmlNamespace="local" ClrNamespace="DataBindingDemo" ?>,这里DataBindingDemo是例子的命名空间。
然后Window标签中这个属性设置
xmlns:local="local"——改为:
xmlns:local="clr-namespace:DataBindingDemo",这里把命名空间DataBindingDemo与命名空间local进行mapping。clr-namespace是固定语法,这能这么写。
接下来,在<Window.Resources>中设置资源:
<local:Nicknames x:Key="XX">
<local:Nickname Name="Don" Nick="Naked" />
<local:Nickname Name="Martin" Nick="Gudge" />
<local:Nickname Name="Tim" Nick="Stinky" />
</local:Nicknames>
这里local等价于DataBindingDemo,所以有NickName类,我们声名一个该类下的对象叫做XX,我们要做的是给XX增加一些资源,就是Nickname对象,于是有了相应的三笔数据。
*注,x:Key用于获取创建对象的名字。
然后在DockPanel中进行绑定,直接指到XX资源,这个刚才定义并赋值的对象:
<DockPanel DataContext="{StaticResource XX}">
这样,相应的后台构造函数改动为:
public Window1()
{
InitializeComponent();
this.addButton.Click += addButton_Click;
// get names collection from resources
this.names = (Nicknames)this.FindResource("XX");
// no need to make data available for binding here
//dockPanel.DataContext = this.names;
}
可以看到,初始化和绑定按钮事件没有改变,下面这句话是关键:
this.names = (Nicknames)this.FindResource("XX");
也就是说,找到前台axml的XX对象,拆箱后转给names私有变量。不用再给dockPanel绑定数据了,因为前台xaml已经实现绑定了。
——例子讨论完毕。
最后再讨论一下xaml的Mapping语法:重画一下那张图吧(原图有问题):
这本书这一节写得实在是不好,一个local搞得我糊里糊涂,于是,准备按照他的思路,按照我的理解,改写一遍,包括源代码。
首先,这句话WPF新版本已经不用了:
<?Mapping XmlNamespace="local" ClrNamespace="DataBindingDemo" ?>,这里DataBindingDemo是例子的命名空间。
然后Window标签中这个属性设置
xmlns:local="local"——改为:
xmlns:local="clr-namespace:DataBindingDemo",这里把命名空间DataBindingDemo与命名空间local进行mapping。clr-namespace是固定语法,这能这么写。
接下来,在<Window.Resources>中设置资源:
<local:Nicknames x:Key="XX">
<local:Nickname Name="Don" Nick="Naked" />
<local:Nickname Name="Martin" Nick="Gudge" />
<local:Nickname Name="Tim" Nick="Stinky" />
</local:Nicknames>
这里local等价于DataBindingDemo,所以有NickName类,我们声名一个该类下的对象叫做XX,我们要做的是给XX增加一些资源,就是Nickname对象,于是有了相应的三笔数据。
*注,x:Key用于获取创建对象的名字。
然后在DockPanel中进行绑定,直接指到XX资源,这个刚才定义并赋值的对象:
<DockPanel DataContext="{StaticResource XX}">
这样,相应的后台构造函数改动为:
public Window1()
{
InitializeComponent();
this.addButton.Click += addButton_Click;
// get names collection from resources
this.names = (Nicknames)this.FindResource("XX");
// no need to make data available for binding here
//dockPanel.DataContext = this.names;
}
可以看到,初始化和绑定按钮事件没有改变,下面这句话是关键:
this.names = (Nicknames)this.FindResource("XX");
也就是说,找到前台axml的XX对象,拆箱后转给names私有变量。不用再给dockPanel绑定数据了,因为前台xaml已经实现绑定了。
——例子讨论完毕。
最后再讨论一下xaml的Mapping语法:重画一下那张图吧(原图有问题):
相关文章推荐
- Collection
- 怎样用AT指令查询本机手机号码
- 办公室倒水
- UIViewController 中的 willMoveToParentViewController和didMoveToParentViewController的使用(转载)
- 微信支付中xml和map互转
- 欢迎使用CSDN-markdown编辑器
- 字符串分割
- Activity全透明
- 怎样用AT指令查询本机手机号码
- cas 部署过程中遇到的一些问题(持续更新)
- Java使用Pipeline对Redis批量读写(hmset&hgetall)
- AutoCAD for .Net 开发环境配置
- WPF笔记(1.6 数据绑定)——Hello,WPF!
- 用“MEAN”技术栈开发web应用(二)express搭建服务端框架
- 有评论就是我最大的动力~MySQL基础篇完结(存储引擎和图形化管理工具)
- 1)④爬取新浪军事新闻,并把内容存放到相应的文件夹中
- hadoop 2.7.1 高可用安装部署
- kindle】扫描版PDF完美切割六寸
- 网站内容建设策略
- Android平台接入Facebook登录