wpf
學習心得(1
)
資源
wpf中的資源一般是指資源字典
(dictionaryresource)
中的元素,可以把任何物件置於其中以便訪問。
要獲得乙個資源字典,可以新建:
但更多的時候是通過
resources
屬性來獲得的:
整個應用程式有效
framewrokelement.resources//
該控制項及其子控制項有效
style.resources//
樣式中有效
我舉乙個較為複雜的例子:
是乙個frameworkelement
元素,實際上,在
wpf中,幾乎所有的控制項都是
frameworkelement
的派生,所以都有
resources
屬性。dictionaryresource
中的項需要乙個
key來區分不同的元素(在後面講到
style
的時候,會有乙個特例),而其
name
則是可有可無的。
我在資源字典中定義了三個資源,包括兩個
wpf中的物件
soildcolorbrush
和button
,以及乙個
clr物件浮點數,為了使用
clr中的型別,我事先引入了命名空間:
xmlns:s
="clr-namespace:system;assembly=mscorlib"
該示例中,我使用了
7種不同的方式建立了
7個按鈕,下面分別予以說明:
第一行:
<
button
background
=""/>
建立乙個
button
,並將其
background
屬性繫結到資源
scbrush
。其中大括號
{}表示這是乙個標記擴充套件;
staticresource
表示引入靜態資源,與之相對的,還有乙個
dynamicresource
,這兩者用法一樣,區別也不大,簡單地說,動態資源在執行時才繫結,並且當資源更改時可以發出通知,而且可以先使用,後宣告;
scbrush
是資源的鍵
該行實際上等價於
等二行:
<
button
background
="}"/>
也就是說,實際上是建立了乙個
binding
物件,並設定其
source
屬性為靜態資源
scbrush
第三行:
<
button
background
=",path
=background}"/>
這裡也是設定
background
屬性,但與之前的不同,這裡繫結的是乙個按鈕,而不是乙個畫刷,所以這裡用
path
屬性來指定其路徑
第四行:
<
button
background
=""/>
我們也可以用
name
而不是key
來訪問資源,這需要把
source
改為elementname
,另外,我還要告訴你,如果
path
是繫結中的第乙個物件,則可以省略
」path=」。
第五行:
<
button
height
=""/> 繫結
clr物件
第六行:
<
staticresource
resourcekey
="btnkey"/>
這是乙個迥然不同的語法,我沒有使用
binding
,而是直接嵌入資源。
這種語法也許十分罕見,以至於
visualstudio
都無法給出正確的智慧型感知,我也是反覆實驗出來的,切勿模仿!
(^_^)
第七行:
<
button
content
=""/>
原來繫結並不一定需要建立資源,你也可以通過
x:static
的語法來使用靜態屬性。
總結一下:
通常,每個繫結都具有四個元件:繫結目標物件、目標屬性、繫結源,以及要使用的繫結源中的值的路徑。
舉例如下:
<
button
background
=",path
=background}"/> 其中
button
為繫結目標物件,
background
為目標屬性,
btnkey(
或者btnname)
為繫結源,
path
為繫結源路徑。如何省略路徑,則認為繫結的是整個繫結源。
當然,還有許多與繫結相關的東西還沒有提到,比如繫結上下文、屬性通知等,大家自己去看吧。
WPF學習心得
1.關於控制項的賦值和取值 a.label 通過label.屬性可直接獲取,賦值只要將相應的值轉換為對應的格式即可。例如 cs score convert.toint32 lblscore.content 10 lblscore.content convert.tostring score b.下拉...
oracle學習心得 1
oracle 使用心得 剛開始使用oracle,把今天的學習心得小結一下。oracle 預裝之後會有一些預設的帳戶供使用,具有管理員許可權的可用 system manager 接下來熟悉了一下oracle基本命令 1 建表 舉例 sql create table mytable name chara...
jQuery學習心得(1)
經常見到jquery中的這種寫法 function jquery 許多前端工程師都只是照貓畫虎的這樣,卻不清楚為什麼這樣寫。其實這個寫法是函式定義立即呼叫的寫法之一。在js中,function在定義的時候就可以通過在後面加乙個小括號的形式立即進行呼叫。例如 function function fun...