說起樣式,大家第一反應肯定是css,好的,先上一段**。
html
ul,form
body,div,th,td,li,dd,span,p,a
h3,input
body
ulh1,h2,h4,h5,h6
imga
a:hover
我們知道css實現了內容與樣式的分離,既然wpf跟webform非常類似,那麼肯定也有一套能夠實現css的功能,是的。這就是wpf的style。
一:style類
首先我們看看style裡面有哪些東西,在vs裡面我們可以通過按f12檢視類的定義。
從上圖我們知道setters的型別是setterbasecollection,可以看得出是乙個存放setterbase的集合,setterbase派生出了兩個類
setter和eventsetter,下面我們看看setter類的定義。
估計大家想迫不及待的試一試,好了,我先做乙個簡單的demo。
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
最後效果:
然後在控制項上引用一下就ok了。
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
現在我們新增乙個label,如果我們也需要同樣的「背景色」和「字型」,那麼我們是否要重新寫乙個label的樣式嗎?答案肯定是否定的,聰明的你肯定會
想到」基類「。我們發現label和button都是繼承自contentcontrol,都屬於內容控制項,那麼何不在targettype中定義為contentcontrol不就ok了嗎?
我們在說setter的時候也提到了,其實targettype也就是將樣式施加到某乙個物件上,具體的也沒什麼好說的。
3:baseon
我們知道css具有「繼承和覆蓋」的特性,同樣我們的wpf中也是具有的。
<1>:繼承
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
效果:
<2>:覆蓋
我們知道css遵循「就近原則」。
①:「行內」覆蓋「嵌入」,「嵌入」覆蓋「外部」
②:同級別遵循「就近」。
顧名思義,是觸發器的意思,我們可以認為是wpf在style中注入了一些很簡單,很sb的js**。
wpf中有5種trigger,都是繼承自triggerbase類。
<1> trigger,mulitrigger
我們知道js是事件驅動機制的,比如觸發mouseover,mouseout,click等事件來滿足我們要處理的邏輯,那麼wpf在不用寫c#**的情況下
用trigger就能夠簡單的滿足這些事件處理。
下面舉個例子
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
最後的效果就是當ismouseover=true的情況下,button的background變成pink。
然而trigger只能滿足在單一的條件下觸發,那麼我想在多個條件同時滿足的情況下才能觸發有沒有辦法做到呢?剛好mulitrigger就可以幫你實現。
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
這裡我們看到,只有滿足了ismouseover和ispressed的時候,我們的button才會變成粉色。
<2>datatrigger,multidatatrigger
這個跟上面的trigger有什麼不同呢?其實也就是datatrigger多了乙個binding的屬性,當然它的實際應用也是最廣泛的。
xmlns=""
xmlns:x=""
xmlns:sys="clr-namespace:system;assembly=mscorlib"
title="mainwindow" height="350" width="525">
效果:
當我們選中radio的時候,字型變大,同樣multidatatrigger這個多條件的使用道理也是一樣的,這裡就不介紹了。
<3>eventtrigger
這個trigger與動畫有關,目前專案中還沒接觸到,留給大家自己研究研究。
5:issealed
用於標記style是唯讀的,類似我們在c#中的seal關鍵字,來達到不允許讓繼承類使用,wpf使用seal常常在c#**裡面控制,在xaml中我們
是找不到的,有興趣的話,大家自己研究研究。
php入門第三天
三元運算和if語句。我先道歉,我最近才發現我用的wamp不是我說的那一版,我安裝wamp的時候沒刪老版的,而且安裝在了原目錄。現在發現新版的預設配置是如果變數未賦初值,就會報錯。雖然變數未賦初值改配置檔案就可以,這樣寫起來也方便,但據我的經驗,這樣做,好處比壞處少。現在在下面的二段 中加入了這兩句,...
Python入門第三天
pyhton3 第三方庫文件檢視 python m pydoc p 1234然後再瀏覽器中輸入 localhost 1234 字串 s.title 將字串的首字母大寫 s.upper 轉化為大寫 s.lower 轉化為小寫 s.swapcase 大小寫交換 s.isalnum 檢查是否全部是字母或數...
第三天 css的文字樣式
今天的學習讓我把之前學的知識進行了乙個彙總。1 關係 html是基礎,css為其增色。2 工作原理 首先瀏覽器把html和css轉換成dom 文件物件模型 把文件內容和樣式結合在一起,然後再瀏覽器上顯示dom就出現了最後的結果。3 dom 相當於一種樹形結構,每個元素 屬性 文字都相當於乙個結點,然...