1.參考:html
https://msdn.microsoft.com/zh-cn/library/ms747086(v=vs.110).aspxexpress
http://www.cnblogs.com/cww2010/archive/2012/04/30/2476844.html(系統命名空間中的兩個參考)網絡
2.默認命名空間app
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類,包括用來構建用戶界面的控件。該名稱空間的聲明沒有使用名稱空間前綴,因此它稱爲整個文檔的默認名稱空間,除非另行指明,不然每一個元素自動位於這個名稱空間:spa
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
第二個聲明映射一個單獨的 XAML 命名空間,一般將其映射到 x: 前綴。它包含了各類XAML實用特性,這些特性可影響文檔的解釋方式:設計
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
命名空間的語法格式:xmlns[:可選的映射前綴]="名稱空間"code
xmlns後能夠跟一個可選的映射前綴,之間用冒號分隔,若是沒有寫可選映射前綴,則意味着全部來自這個命名空間的標籤都不用加前綴,該命名空間稱做「默認命名空間」,默認命名空間只能有一個。component
2.2系統命名空間:orm
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屬性