閒話WPF之三(XAML的名字空間)

2021-09-22 07:35:50 字數 2215 閱讀 2579

在前一篇文章中,指出

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開發和特殊的應用中,很少有開發組配備單獨的美工,至少目前是這樣吧!根...