WPF笔记(1.8 资源与映射)——Hello,WPF!

简介: 原文:WPF笔记(1.8 资源与映射)——Hello,WPF!终于,看明白了,已经是凌晨1:39分。这本书这一节写得实在是不好,一个local搞得我糊里糊涂,于是,准备按照他的思路,按照我的理解,改写一遍,包括源代码。
原文: 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>中设置资源:

img_a6339ee3e57d1d52bc7d02b338e15a60.gif          < local:Nicknames x:Key = "XX " >
img_a6339ee3e57d1d52bc7d02b338e15a60.gif            
< local:Nickname Name = " Don "  Nick = " Naked "   />
img_a6339ee3e57d1d52bc7d02b338e15a60.gif            
< local:Nickname Name = " Martin "  Nick = " Gudge "   />
img_a6339ee3e57d1d52bc7d02b338e15a60.gif            
< local:Nickname Name = " Tim "  Nick = " Stinky "   />
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
</ local:Nicknames >

这里local等价于DataBindingDemo,所以有NickName类,我们声名一个该类下的对象叫做XX,我们要做的是给XX增加一些资源,就是Nickname对象,于是有了相应的三笔数据。
*注,x:Key用于获取创建对象的名字。

然后在DockPanel中进行绑定,直接指到XX资源,这个刚才定义并赋值的对象:
 <DockPanel DataContext="{StaticResource XX}">

这样,相应的后台构造函数改动为:

img_a6339ee3e57d1d52bc7d02b338e15a60.gif          public  Window1()
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif {
img_33d02437d135341f0800e3d415312ae8.gif            InitializeComponent();
img_33d02437d135341f0800e3d415312ae8.gif 
img_33d02437d135341f0800e3d415312ae8.gif            
this.addButton.Click += addButton_Click;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
// get names collection from resources
img_33d02437d135341f0800e3d415312ae8.gif
            this.names = (Nicknames)this.FindResource("XX");
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
// no need to make data available for binding here
img_33d02437d135341f0800e3d415312ae8.gif            
//dockPanel.DataContext = this.names;
img_05dd8d549cff04457a6366b0a7c9352a.gif
          }

可以看到,初始化和绑定按钮事件没有改变,下面这句话是关键:
this.names = (Nicknames)this.FindResource("XX");
也就是说,找到前台axml的XX对象,拆箱后转给names私有变量。不用再给dockPanel绑定数据了,因为前台xaml已经实现绑定了。

——例子讨论完毕。

最后再讨论一下xaml的Mapping语法:重画一下那张图吧(原图有问题):





 

目录
相关文章
|
C#
WPF 界面实现多语言支持 中英文切换 动态加载资源字典
原文:WPF 界面实现多语言支持 中英文切换 动态加载资源字典 1、使用资源字典,首先新建两个字典文件en-us.xaml、zh-cn.xaml。定义中英文的字符串在这里面【注意:添加xmlns:s="clr-namespace:System;assembly=mscorlib】 zh-cn.
2897 0
|
2月前
|
C#
浅谈WPF之样式与资源
WPF通过样式,不仅可以方便的设置控件元素的展示方式,给用户呈现多样化的体验,还简化配置,避免重复设置元素的属性,以达到节约成本,提高工作效率的目的,样式也是资源的一种表现形式。本文以一个简单的小例子,简述如何设置WPF的样式以及资源的应用,仅供学习分享使用,如有不足之处,还请指正。
42 0
|
C# 数据格式 XML
WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树)
原文:WPF 资源(StaticResource 静态资源、DynamicResource 动态资源、添加二进制资源、绑定资源树) 一、WPF对象级(Window对象)资源的定义与查找 实例一: StaticR...
8044 0
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
WPF界面无法正常显示(资源引用,如转换器),但程序正常运行
|
C#
WPF中的一个bug造成CPU资源拉满
WPF中的一个bug造成CPU资源拉满
169 0
|
C#
WPF资源字典怎么用
资源字典的使用方法
187 0
WPF资源字典怎么用
|
C#
WPF XAML 资源样式模板属性存放位置
原文:WPF XAML 资源样式模板属性存放位置 WPF的XAML 资源申明 类似HTML。 整体来说分3种1.行类资源样式属性 1.1 行内属性 1.2 行内样式 模板(没多大意义) ...
1108 0
|
C# .NET 开发框架
WPF笔记 ( xmlns引用,Resource、Binding 前/后台加载,重新绑定) 2013.6.7更新
原文:WPF笔记 ( xmlns引用,Resource、Binding 前/后台加载,重新绑定) 2013.6.7更新 1、xmlns Mapping URI的格式是 clr-namespace:[;assembly=] (1)如果自定义类和XAML处在同一个Assembly之中,只还需要提供clr-namespace值。
1399 0
|
C#
WPF 调用资源图片
原文:WPF 调用资源图片      最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+"/images/starShow.
1261 0
|
C#
WPF - 资源收集
原文:WPF - 资源收集   OpenExpressApp的UI现在是使用WPF,所以熟悉WPF是必须的,以下我将可能用到的一些相关内容随时记录下来,以备查阅。此篇文章将不断更新,感兴趣的可以看看,也欢迎大家补充。
1148 0