zoukankan      html  css  js  c++  java
  • WPF之命名空间和资源

    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:UsersPublicPicturesSample PicturesKoala.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属性

  • 相关阅读:
    实例之内存体系结构(1)--- 共享池(Share pool)
    体系结构 --- 实例和数据库
    分页查询与TOP-N特性
    MERGE 和 WITH语法
    外部表
    SQL语句(9)--- 同义词
    SQL语句(8)--- 索引
    SQL语句(7)--- 视图
    SQL语句(6)--- 约束
    死锁的产生与解决
  • 原文地址:https://www.cnblogs.com/zzw1986/p/7441237.html
Copyright © 2011-2022 走看看