筆記 簡譯 XAML揭秘 4

2021-04-15 09:47:52 字數 4544 閱讀 6239

子物件元素

xaml

檔案與xml

檔案類似,必須有乙個根物件元素,自然

xaml

也支援子物件元素。乙個物件元素可以有三種型別的子元素:內容屬性(content property)值、集合項(collection items)或可以被轉換為父類的值

內容屬性

大多數wpf

類設計了乙個可以被設定為任意值的屬性,這個屬性被稱作

「內容屬性」。

button

的content

屬性就是符合這種規則的設計,如下四個等價的示例:

例1:簡單內容(文字)

/>例2

:簡單內容的簡略寫法

(內容屬性型別子元素,作為

button

的content

屬性)

>例3

:複雜內容(物件)

>例4

:複雜內容的簡略寫法(內容屬性型別子元素,作為

button

的content

屬性)

可用作內容屬性型別的屬性名稱並不是必須叫做

「content」

,實際上如

combobox

、listbox

和tabcontrol

控制項是使用它們的

items

屬性作為內容屬性的。

(wpf

中的button

類從buttonbase

類派生,

buttonbase

類又從contentcontrol

類派生,而

contentcontrol

類使用其

content

屬性構造了

system.windows.markup.contentpropertyattribute

自定義特性,即對於所有的

contentcontrol

,其content

屬性將會作為它們的內容屬性(子物件元素)。同理,

combobox

類間接從

itemscontrol

派生,其

items

屬性用於構造

contentpropertyattribute

,即其items

屬性將會作為它的內容屬性(子物件元素)。由此可知,如果我們需要從已有控制項繼承,或從控制項基類

control

派生自定義的控制項,需要注意

contentpropertyattribute

的作用。)

集合項xaml

允許我們新增兩種支援索引的型別:列表(

list

)和字典(

dictionary)。

列表列表是任何實現了

system.collections.ilist

介面的集合,比如

system.collections.arraylist

或者許多由

wpf定義的集合類。下例向

listbox

控制項新增了兩個專案,它的

items

屬性是itemcollection

型別的,該型別實現了

ilist

介面: 例:

進一步,由於

listbox

的items

屬性是其內容屬性,因此,還可以簡化上例:

上面的**可以正常工作是因為

listbox

的items

屬性(唯讀)被自動初始化為空(

empty

)集合物件。如果集合屬性一開始是

null

(不明白)

,並且可以讀

/寫,我們就必須顯式地將集合項放入例項化這個集合的元素當中。

筆記 簡譯 XAML揭秘 2

屬性 property 元素 wpf 的一大特色就是支援豐富的組合,下面的例子建立了乙個中間是乙個方塊的按鈕 按鈕的標題已經不僅僅 是文字了 system.windows.controls.button b new system.windows.controls.button system.wind...

筆記 簡譯 WPF的新特性 路由事件(1)

路由事件 routed event 就像 wpf在 net 屬性之上新增了許多基礎結構一樣,它也在 net 事件之上新增了許多基礎結構。路由事件是一種與樹上元素協同工作的事件,當它被觸發後,能夠沿著邏輯樹和視覺樹上 下傳遞,觸發每個子元素的對應事件,不需要任何自定義的 事件路由幫助大多數應用程式遮蔽...

《大道至簡》閱讀筆記4

幾周之前,在一所電腦培訓學校與學生座談時,乙個 學員問我 為什麼我學了一年的程式設計,卻還是不知道怎 麼寫程式呢 我想了想,問了這個學員乙個問題 你桌上的書是 亂的嗎?他遲疑了一下,不過還是回答我道 比較整齊。我當時便反問他 你既然知道如何把書分類 歸整 得整整齊齊地放在書桌,那怎麼沒想過如何把所學...