1.参考:

https://msdn.microsoft.com/zh-cn/library/ms747086(v=vs.110).aspx

http://www.cnblogs.com/cww2010/archive/2012/04/30/2476844.html(系统命名空间中的两个参考)

2.默认命名空间

2.1创建一个WPF应用,默认生成代码:

 <Window x:Class="WpfApplication1.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Title="MainWindow" Height="350" Width="525">
     <Grid>

     </Grid>
 </Window>

第一个声明将整个 WPF 客户端/框架 XAML 命名空间映射为默认命名空间,包含了所有WPF类,包括用来构建用户界面的控件。该名称空间的声明没有使用名称空间前缀,所以它称为整个文档的默认名称空间,除非另行指明,否则每个元素自动位于这个名称空间:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

第二个声明映射一个单独的 XAML 命名空间,通常将其映射到 x: 前缀。它包含了各种XAML实用特性,这些特性可影响文档的解释方式:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

命名空间的语法格式:xmlns[:可选的映射前缀]="名称空间"

xmlns后可以跟一个可选的映射前缀,之间用冒号分隔,如果没有写可选映射前缀,则意味着所有来自这个命名空间的标签都不用加前缀,该命名空间称作“默认命名空间”,默认命名空间只能有一个。

2.2系统命名空间:

 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

xml交互性的命名空间,指明哪些需要处理,哪些可以忽略

 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

设计时相关的命名空间

2.3引用自定义类

自定义一个Helper类:

 namespace WpfApplication.Helpers
 {
     public static class PasswordHelper
     {
         //代码块
     }
 }

如果引用的类在同一个Project,只需要添加名字空间:

xmlns:local="clr-namespace:WpfApplication.Helpers"

使用方法:

 <PasswordBox x:Name=" 
HorizontalAlignment="Left" local:PasswordHelper.Attach="True" local:PasswordHelper.Password="{Binding Password,Mode=TwoWay}"></PasswordBox>

如果引用的类在另外一个Project,则需要说明Assembly和Namespace

  xmlns:helper="clr-namespace:WpfApplication.Helpers;assembly=WpfApplication"

使用的时候,只需要将local换成helper。

3 程序资源

WPF提供了几个专门使用资源的类,

3.1可以直接使用资源的名称访问资源

方法1:

1    <Button Grid.Row="1" Name="down">
2         <Image Source="Images/Tulips.jpg"></Image>
3    </Button>

方法2:

1 <Button Grid.Row="0" Name="up" Click="up_Click">
2     <Image Name="img"></Image>
3 </Button>

然后在程序中添加资源:

 private void up_Click(object sender, RoutedEventArgs e)
 {
     img.Source = new BitmapImage(new Uri(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"));
 }

或者如下(如此可使用相对路径,但注意反斜杠)

img.Source = new BitmapImage(new Uri("Images/Koala.jpg",UriKind.Relative));

再或者

img.Source = new BitmapImage(new Uri("pack://application:,,,/Images/Koala.jpg"));

注意:当使用绝对URI时,可使用指向程序集资源的文件路径、用于网络共享的UNC路径、Web站点URL以及pack URI。如果应用程序不能从期望的位置检索到资源,就会产生异常。如果URI是使用XAML设置的,那么会在创建页面时产生异常。

3.2位于其他程序集中的资源

使用packURI还可以检索嵌入到另一个库中的资源(换句话说,在应用程序中使用的DLL程序集中的资源)。这种情况下需要使用以下语法:

pack://application:,,,/AssemblyName;component/ResourceName

例如,如果图像被嵌入到引用的名为ImageLibrary的程序集中,将需要使用如下URI:

img.Source = new BitmapImage(new Uri("ImageLibrary;component/images/winter.jpg",UriKind.Relative));

如果使用强命名的程序集,可使用包含版本和/或公钥标记的限定程序集引用代替程序集的名称。使用分号隔离每段信息,并在版本号数字之前添加字母v。下面是一个使用版本号的示例:

img.Source = new BitmapImage(new Uri("ImageLibrary;v1.25;component/images/winter.jpg",UriKind.Relative));

下面的示例同时使用了版本号和公钥标记:

img.Source = new BitmapImage(new Uri("ImageLibrary;v1.25;dc642a7f5bd64912;component/images/winter.jpg",UriKind.Relative));

 4.绑定

4.1元素到元素的绑定

   <!--元素到元素的绑定:ElementName:指示源元素,Path:指示源元素中的属性-->
   <ControlTemplate Background="{Binding ElementName=MainWindow, Path=Background}" />

元素到元素的绑定:

关键字:Binding

Element:指定的源元素

Path:源元素中的属性

Mode:绑定模式(单向,双向)

4.2绑定到非元素的对象

 <ControlTemplate Width="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Width}" />

Source:该属性是指向源对象的引用,是提供数据的对象

RelativeSurce:这是引用,使用RelativeSource对象指向源对象。有了这个附加层,可在当前元素(包含绑定表达式的元素)的基础上构建引用。通常用于编写控件模版以及数据模版。

DataContext:如果没有使用Source或RelativeSource属性指定源,WPF就从当前元素开始在元素树中向上查找,检查每个元素的DataContext属性,并使用第一个非空的DataContext属性

4.2.1使用Source属性

绑定到作为资源创建的对象

   <TextBlock Text="{Binding Source={StaticResource CustomFont}, Path=Source}" />

4.2.2使用RelativeSource属性

名称 说明
FindAncesstor 表达式绑定到父元素
Self 表达式绑定到同一元素的另一个属性上
TemplateParent 表达式绑定到应用模版的元素。只有绑定位于控件模版或数据模版内部时,这种模式才能工作

4.2.3使用DataContext属性

WPF之命名空间和资源的更多相关文章

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

    原文:WPF笔记(1.8 资源与映射)--Hello,WPF! 终于,看明白了,已经是凌晨1:39分.这本书这一节写得实在是不好,一个local搞得我糊里糊涂,于是,准备按照他的思路,按照我的理解,改 ...

  2. WPF之神奇的资源

    原文:WPF之神奇的资源 WPF中的资源有两种,一种称为"程序集资源"(assembly resource),另一种称为"对象资源"(object resour ...

  3. (转)WPF控件开源资源

    (转)WPF控件开源资源 Textbox Drag/Drop in WPFhttp://www.codeproject.com/Articles/42696/Textbox-Drag-Drop-in- ...

  4. WPF中静态引用资源与动态引用资源的区别

    WPF中静态引用资源与动态引用资源的区别   WPF中引用资源分为静态引用与动态引用,两者的区别在哪里呢?我们通过一个小的例子来理解. 点击“Update”按钮,第2个按钮的文字会变成“更上一层楼”, ...

  5. WPF控件开源资源

    (转)WPF控件开源资源 Textbox Drag/Drop in WPFhttp://www.codeproject.com/Articles/42696/Textbox-Drag-Drop-in- ...

  6. WPF中引入外部资源

    有时候需要在WPF中引入外部资源,比如图片.音频.视频等,所以这个常见的技能还是需要GET到. 第一步:在VS中创建一个WPF窗口程序 第二步:从外部引入资源,这里以引入图片资源为例 1)新建Reso ...

  7. WPF 精修篇 管理资源字典

    原文:WPF 精修篇 管理资源字典 样式太多  每个界面可能需要全局的样式 有没有肯能 WPF 中的样式 像Asp.net中 的CSS一样管理那 有的 有资源字典 BurshDictionary &l ...

  8. WPF 精修篇 动态资源

    原文:WPF 精修篇 动态资源 动态资源 使用 DynamicResource 关键字 静态 就是 StaticResource 原则上是 能用静态就用静态 动态会让前台界面压力很大~ 动态资源引用 ...

  9. WPF 精修篇 静态资源

    原文:WPF 精修篇 静态资源 在WPF中 如果设置好了一个控件样式或者矩形样式 如果Copy出一个新的 那么样式也会双份 比如 下面的矩形 我定义好了一个 Copy 以后 就出现一个新的 但是改变样 ...

随机推荐

  1. 【前端积累】JavascriptUtil 字符串部分

    //计算字符串长度 String.prototype.strLen = function() { var len = 0; for (var i = 0; i < this.length; i+ ...

  2. http

    HTTP是一个属于应用层的面向对象的协议,由于其简单.快速的方式,适用于分布式超媒体信息系统, 特点: 1.支持客户/服务器模式. 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方 ...

  3. xss篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题

    前言 最早接触安全也是从xss攻击和sql注入攻击开始的. 0x01    跨站脚本攻击漏洞(XSS),是客户端脚本安全中的头号大敌,owasp top10 屡居榜首,由于攻击手法较多,开发者水平不一 ...

  4. Oracle查询时间字段并排序

    select * from geimstatus_history twhere to_date(t.data_time,'YYYY-mm-dd') = to_date(sysdate,'YYYY-mm ...

  5. php 使用函数中遇到的坑之----strpos

    strpos — 查找字符串首次出现的位置 mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) <?ph ...

  6. 使用Xmanager访问CentOS远程桌面

    最近在搞Qemu虚拟机相关的项目,需要用到Linux的桌面系统,用Xmanager连接CentOS桌面最方便了. Linux端:CentOS release 6.8 (Final) Windows端: ...

  7. myql Connect

    mysql折腾笔记 2014-01-05 10:58 经常吹嘘自己玩过各种数据库. redis, mysql, sqlite, mongodb..常用数据库都不在话下,不料今天却在远程连接mysql上 ...

  8. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  9. iOS之UIKit系列教程<一>

    前言:博主接触iOS的编程也有一段时间,今天把有关UI控件的一些知识在这里做一些总结. 申明:此系列文章都是使用目前最新版本swift3.0.1进行讲解的,与其他版本可能略有差异. 一,UIKit之设 ...

  10. 【APP设计利器】Sketch 41 Mac中文破解版(含汉化插件)

    Sketch是一款拥有美观界面和强大功能适用于所有设计师的专业矢量绘图工具.它旨在为美术设计师创造出一款更优秀的作品,不是复制品,而是提升品.Sketch简约的设计是基于无限的规模和层次的绘图空间,免 ...