WPF觸發器之資料觸發器(B)

2021-09-06 06:22:58 字數 2681 閱讀 3739

如果你還不知道資料觸發器怎麼使用,或者連資料觸發器是什麼都還不了解,請先閱讀wpf觸發器之資料觸發器(a)。

1. 當你知道了資料觸發器是當某個.net屬性值變化時觸發的操作,比如說當數字變成了 "8",那就讓數字變成紅色。那麼使用資料觸發器實現此功能就可以這樣寫:

<

datatrigger

binding

=",path=text}

"value

="8"> ...

2. 問題來了——可是,當 "datatrigger" 的 "value" 是乙個變數值你要怎麼辦呢??

如果你了解過wpf繫結,你可能會先想到這樣來修改你的**:

<

datatrigger

binding

=",path=text}

"value

=""> ...

執行程式,編譯器會丟擲乙個錯誤使用導致的異常:

此異常說不能在 "datatrigger" 的 "value" 屬性上使用 "banding" ,原因是它不是乙個依賴屬性。只有依賴屬性可以使用 「binding" 。

關於此異常的詳細資訊,請大家自行查閱 」binding「 和 」依賴屬性「 的說明,在這裡不做過多解釋。

3. 這個問題,在msdn技術論壇有人進行了**:如何在datatrigger的value中設定程式級變數? usercontrol中如何繫結窗體變數?

4. 解決方案。

使用多重繫結,關於wpf "多重繫結" 的知識,請檢視msdn文件,在這裡也不做過多解釋。檢視 "多重繫結" 這裡。

此問題是因為不使用固定的值 "8" 來進行數字紅色顯示引起的,而是需要根據變數 "inputvalue" 決定。

所以,此解決辦法的原理是把變數值 "inputvalue" 和當前的值 "nowvalue" 都傳入某個方法,返回乙個布林值,表示 "inputvalue" 和 "nowvalue" 是否相等。

這樣,就可以把 value

=""轉換為 value

="true",即把變化值轉化為布林值 「true」。

下面給出具體步驟:

多重繫結需要使用多值轉換器。

首先定義乙個多值轉換器類:timeisupconverter。**如下:

1

public

class

timeisupconverter : imultivalueconverter219

return

false;20

}2122public

object convertback(object value, type targettypes, object

parameter, system.globalization.cultureinfo culture)

2326 }

在xaml檔案中引用剛剛定義轉換器。

<

usercontrol

xmlns:views

...

<

usercontrol.resources

>

<

views:timeisupconverter

x:key

="timeisupconverter"

/>

usercontrol.resources

>

修改資料轉換器的**:

<

style.triggers

>

<

datatrigger

>

<

datatrigger.binding

>

<

multibinding

converter=""

>

<

binding

elementname

="tbinputvalue"

path

="text"

/>

<

binding

elementname

="tbnowvalue"

path

="text"

/>

multibinding

>

datatrigger.binding

>

<

datatrigger.value

>true

datatrigger.value

>

datatrigger

>

style.triggers

>

ok,問題解決!

WPF觸發器之資料觸發器(A)

wpf觸發器 屬性觸發器 當依賴屬性的值改變時呼叫。資料觸發器 當普通.net屬性的值改變時呼叫。事件觸發器 當路由事件被觸發時呼叫。1.資料觸發器示例 數字從0 9計數,當數字變為8時候,數字變化成紅色並加粗進行顯示。0 1 2 3 4 5 6 7 8 9 0 2.新建wpf專案,專案名稱 dat...

WPF之觸發器

觸發器,應用屬性值或有條件地執行操作 1 觸發源 控制項 2 觸發條件 某屬性為某個值,或執行某個事件時 3 執行操作 更改某個屬性值或執行某個事件 4 舉例 當視窗載入時 執行某個事件時 以動畫的形式將視窗的大小倍數從 0 到 1 展示 執行某個事件 1 根據觸發器的觸發條件,在 wpf 中,觸發...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...