閒話WPF之二二(WPF中的Style)

2021-09-05 15:47:11 字數 1010 閱讀 5415

style是一種修改屬性值是方法。我們可以將其理解為對屬性值的批處理。對批處理大家應該不會感到預設。對,通過style我們可以批量修改屬性的值。先從乙個簡單的style例子開始:

"xmlns:x=""

title="viewer3d settings"

>

第一感覺你可能會奇怪,為什麼style在資源裡呢?我個人直接將理解為「批處理」的緣故。因此style是修改多個物件的屬性值,它不從屬於單獨的元素物件。另乙個疑惑的問題是style沒有設定x:key屬性。這是乙個非常關鍵的設定。如果我們設定了style的x:key屬性,相當於在當前window是資源中定義了乙個名稱為x:key設定值的style物件。記住定義的效果相當於物件。如果沒有設定x;key,那麼這個style將對屬於這個window中所有checkbox生效。這就起到了批處理的效果。

首先設定的是style的targettype屬性,它表示我們希望修改的目標型別。然後定義乙個setters的集合。每個setter都表示修改的乙個屬性或者事件。property設定屬性名稱,value設定屬性值。event設定事件名稱,handler設定事件的響應函式名稱。只要你在resource做了類似的定義,在此window中所使用的任何chekcbox都會預設這些屬性值。是不是很方便呢?我們在此定義一次,可以節省很多**。

也許你還會問:這樣的統一修改屬性太武斷、霸道了吧!也許是的。我們只修改部分element的屬性值,而希望對某些特殊的element做特殊處理。這樣的需求wpf當然也是支援的。看看下面的**:

wpt通過basedon對這種特殊的style提供了支援。很明顯,basedon的意思是我們當前的style基於在資源的checkbox。這裡又看到了x;key擴充套件標記。因為我們需要的是乙個特例,乙個特殊的style物件。為了以後引用這個style,我們需要x:key的標識作用。其它的**與前面類似。

定義後,引用這個特殊style的checkbox的**是這樣的:

win

你已經看到,我們在checkbox中指定了style屬性,並引用前面的staticresource標記。

閒話WPF之二六(WPF效能優化點)

在建立漂亮ui的同時,我們還需要關注應用程式的效能,wpf尤其如此。下面從ms的文件中總結出了一些有用的效能優化點。在實際編寫的過程中,可以參考。這個post非完全原創,是根據一些文件總結出來的。1 建立邏輯樹的時候,盡量考慮從父結點到子結點的順序構建。因為當邏輯樹的乙個結點發生變化時 比如新增或刪...

閒話WPF之十六(WPF中的資源 2 )

程式很簡單,在視窗中新增了兩個按鈕,我們需要關注的是其中對content屬性。這個屬性的作用就是設定按鈕的內容。為什麼這裡的名稱不是text,而是content?如此命名的原因和wpf中控制項乙個非常重要的概念有關 wpf中幾乎任何的控制項 也就是element 都可以作為乙個容器存在。也就是說我們...

閒話WPF之一(WPF的結構)

wpf 個人認為在 ui的實踐中,使用者需要的是易於操作的,更加絢麗的介面。這兩個應該是最基本 也是最重要的宗旨。而對於開發人員就是要用最簡單的方法開發出盡可能漂亮的介面,並且效率也不能太差。要求是不是有些過分啦!除了在一些 web開發和特殊的應用中,很少有開發組配備單獨的美工,至少目前是這樣吧!根...