程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF筆記(1.8 資源與映射)——Hello,WPF!

WPF筆記(1.8 資源與映射)——Hello,WPF!

編輯:關於.NET

終於,看明白了,已經是凌晨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>中設置資源:

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

這裡local等價於DataBindingDemo,所以有NickName類,我們聲名一個該類下的對象叫做XX,我們要 做的是給XX增加一些資源,就是Nickname對象,於是有了相應的三筆數據。

*注,x:Key用於獲取創建對象的名字。

然後在DockPanel中進行綁定,直接指到XX資源,這個剛才定義並賦值的對象:

 <DockPanel DataContext="{StaticResource XX}">

這樣,相應的後台構造函數改動為:

public Window1()
{
  InitializeComponent();

  this.addButton.Click += addButton_Click;

  // get names collection from resources
   this.names = (Nicknames)this.FindResource("XX");

   // no need to make data available for binding here
   //dockPanel.DataContext = this.names;
}

可以看到,初始化和綁定按鈕事件沒有改變,下面這句話是關鍵:

this.names = (Nicknames)this.FindResource("XX");

也就是說,找到前台axml的XX對象,拆箱後轉給names私有變量。不用再給dockPanel綁定數據了,因 為前台xaml已經實現綁定了。

——例子討論完畢。

最後再討論一下xaml的Mapping語法:重畫一下那張圖吧(原圖有問題):

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved