在前一篇文章中,指出
xmlns
的作用是設定
xml檔案的命名空間。類似的,
xmlns:x
的作用也是指定命名空間。這裡為什麼是
x而不是其他的,我們可以簡單的理解為其只是
ms的乙個命名而已,沒有任何特殊的意義,當然,為了避免和它的衝突,我們定義自己的命名空間的時候不能是x。
而另乙個
x:class
的作用就是支援當前
window
所對應的類,前面已經說過每個
xaml
元素都是乙個
clr型別,這裡的
x:class
是window
的乙個屬性,屬性的內容指出當前的視窗類是
firstxaml
名字空間下的
windows1
。為什麼需要類,而不全部用
xaml
實現?xaml
的主要作用還是編寫
ui部分,我們仍然需要用**對程式邏輯進行更深層次的控制。
好了,這是兩個最基本的名字空間。同樣地,名字空間也可以自定義,並且這個自定義會給我們帶來很大的方便。我們定義如下的乙個類:
namespace databind4image}
如果想在
xaml
檔案中使用這個
groupdata
類物件,我們就可以通過自定義的名字空間引入這個類:
xmlns:local="clr-namespace:databind4image"
這裡的字尾
local只
xaml
檔案中用
local
來標識databind4image
當中的任何類。訪問
groupdata
類時只需要加上
local
就可以識別了:
利用名字空間,除了可以引入我們定義的當前工程的類,還可以引入任何的
assembly
。直接看例子是最簡單的:
例子當中引入
.net
的system assembly
,通過它我們就可以直接使用
system
的任何類。利用這種類似的方式,我們可以在
xaml
中使用幾乎所有的
dotnet
框架類。
最後說明一下在
xaml
中inline
嵌入程式邏輯處理**的情況。利用
關鍵字引入處理**。這種情況在實際當中不太合適,我們不應該採用
ui和邏輯混合的方式。詳細的解釋可以引數
windows sdk
文件。
前面提到過每個
xaml
元素表示乙個
.net clr
類。多數的
xaml
元素都是從
system.windows.uielement, system.windows.frameworkelement, system.windows.frameworkcontentelement
和system.windows.contentelement
繼承。沒有任何的
xaml
元素與.net clr
的抽象類對應。但是很多元素都有乙個抽象類的派生類對應。
通常有如下四種通用的
xaml
元素:
root
元素:windows
和page
是最常用的根元素。這些元素位於
xaml
檔案的根元素,幷包含其他元素。
panel
元素:幫助布置
ui位置。常用的是
stackpanel, dockpanel, grid
和canvas。
control
元素:定義
xaml
檔案的控制項型別。允許新增控制項並自定義。
document元素:幫助實現文件提交。主要分為inline和block元素組,幫助設計的外觀類似文件。一些有名的inline元素有bold,linebreak, italic。block元素有paragraph, list, block, figure和table。
xaml元素的屬性與.net類物件的屬性類似,xaml的物件導向特徵使得它的行為與之前的html類似。每個屬性(實際上是類屬性)繼承了父元素的屬性或者過載(如果重新設定了屬性)。
WPF換膚之三 WPF中的WndProc
原文 wpf換膚之三 wpf中的wndproc 在上篇文章中,我有提到過wndproc中可以處理所有經過窗體的事件,但是沒有具體的來說怎麼可以處理的。其實,在wpf中,要想利用wndproc來處理所有的事件,需要利用到sourceinitialized event,首先需要建立乙個hwndsourc...
WPF換膚之三 WPF中的WndProc
在上篇文章中,我有提到過wndproc中可以處理所有經過窗體的事件,但是沒有具體的來說怎麼可以處理的。其實,在wpf中,要想利用wndproc來處理所有的事件,需要利用到sourceinitialized event,首先需要建立乙個hwndsource物件,然後利用其addhook方法來將所有的w...
閒話WPF之一(WPF的結構)
wpf 個人認為在 ui的實踐中,使用者需要的是易於操作的,更加絢麗的介面。這兩個應該是最基本 也是最重要的宗旨。而對於開發人員就是要用最簡單的方法開發出盡可能漂亮的介面,並且效率也不能太差。要求是不是有些過分啦!除了在一些 web開發和特殊的應用中,很少有開發組配備單獨的美工,至少目前是這樣吧!根...