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应用,默认生成代码:

1 <Window x:Class="WpfApplication1.MainWindow"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         Title="MainWindow" Height="350" Width="525">
5     <Grid>
6
7     </Grid>
8 </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系统命名空间:

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

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

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

设计时相关的命名空间

2.3引用自定义类

自定义一个Helper类:

1 namespace WpfApplication.Helpers
2 {
3     public static class PasswordHelper
4     {
5         //代码块
6     }
7 }

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

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

使用方法:

1 <PasswordBox x:Name="txtPassword" Grid.Row="2" Grid.Column="2" Width="150"       HorizontalAlignment="Left"
2     local:PasswordHelper.Attach="True"
3     local:PasswordHelper.Password="{Binding Password,Mode=TwoWay}"></PasswordBox>

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

1  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>

然后在程序中添加资源:

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

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

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元素到元素的绑定

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

元素到元素的绑定:

关键字:Binding

Element:指定的源元素

Path:源元素中的属性

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

4.2绑定到非元素的对象

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

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

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

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

4.2.1使用Source属性

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

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

4.2.2使用RelativeSource属性

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

4.2.3使用DataContext属性

转载于:https://www.cnblogs.com/zzw1986/p/7441237.html

WPF之命名空间和资源相关推荐

  1. WPF整理-使用逻辑资源

    WPF整理-使用逻辑资源 原文:WPF整理-使用逻辑资源 "Traditional application resources consist of binary chunks of dat ...

  2. WPF中引入外部资源

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

  3. WPF 如何在静态资源定义字体大小

    默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀.但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换 ...

  4. WPF CS0234命名空间 *.*中不存在类型或命名空间名“Windows“(是否缺少程序集引用?)

    写代码过程中总会复制粘贴,恶心的是,在复制黏贴的过程中还升级了一下VS.等升级完毕,复制粘贴完毕,再运行程序,发现程序起不来了. 报如下错误,  错误数量达到了惊人的1300多个,几乎全是缺少引用集 ...

  5. 【转】WPF默认控件模板的获取和资源词典的使用

    一.获取默认的控件模板 WPF修改控件模板是修改外观最方便的方式,但是会出现不知道原来的控件的模板长什么样,或者如何在原有控件模板上修改的,下面就分享了获取某控件默认控件模板的方法(以控件Button ...

  6. WPF学习之资源-Resources

    WPF学习之资源-Resources WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些 ...

  7. WPF对象级资源的定义与查找

    文章概述: 本演示介绍了怎样定义WPF对象级的资源,并通过XAML代码和C#訪问和使用对象级资源. 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1hqvJNY8 在线播放 ...

  8. 【转】WPF调用图片路径,或资源图片

    转自:https://www.cnblogs.com/sntetwt/p/5402098.html 一.加载本项目的图片 WPF引入了统一资源标识Uri(Unified Resource Identi ...

  9. WPF调用图片路径,或资源图片

    一.加载本项目的图片 WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源. 其中较为常见的情况是用Uri加载图像.Uri表达式的一般形式为:协议+ ...

最新文章

  1. Matlab与数据结构 -- 求向量或矩阵的最大值
  2. Linux执行可执行文件提示No such file or directory的解决方法
  3. Odoo 8 Graph 视图 之 雷达图 (Radar\Spider)
  4. QoS策略及通过BGP传播—Vecloud微云
  5. Windows上使用SecureCRT软件连接Linux终端 — 解决问题;The remote system refused the connection
  6. VTK:可视化算法之CutStructuredGrid
  7. 汉字转拼音缩写的函数以及其他函数
  8. 140种Python标准库、第三方库和外部工具都有了
  9. HashMap 实现原理
  10. 【转】刨根究底字符编码之十三——UTF-16编码方式
  11. 解决在已办任务菜单中都会抛出异常,由于definitionId=undefined导致的问题
  12. python的安全插件
  13. ArcgisPro3.0-3.0.1中文安装包下载及安装教程
  14. dijkstra最短路径算法视频_最短路径之Dijkstra算法详细讲解
  15. cissp认证考试指南_如何通过CISSP考试(信息安全认证)
  16. linux 编辑文件出现E45readonly option is set (add! to .....)
  17. Win11 PE下如何快速设置IP如何新建共享文件夹并设置为everyone完全控制权限
  18. 【英语语法入门】 第31讲 [被动语态 (1)]被动态的构成和含义
  19. 100%正确率识别票据从金融领域切入挖掘文字识别的巨大价值
  20. 小程序内嵌webview实现支付

热门文章

  1. go 数据类型和操作符
  2. 玩转spring boot——结合redis
  3. python 批量更换图片格式脚本
  4. 在Spring中使用JDK定时器实现调度任务
  5. IT项目的面向对象分析设计、开发及管理
  6. u-boot命令解释
  7. 11 | 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?
  8. mybatis与mysql的优点_MyBatis的优缺点以及特点
  9. input自适应_深度残差网络+自适应参数化ReLU(调参记录18)Cifar10~94.28%
  10. jmeter脚本_性能工具之Jmeter脚本python启动