對wpf 的入門記錄總結 資料繫結之值轉換

2021-09-29 04:13:14 字數 2873 閱讀 3921

前面弄了資料繫結,現在有這樣一種需求:使用同一種型別,但需要以不同方式呈現的場景。

①有乙個數值,但您希望以一種方式顯示零值,而以另一種方式顯示正數

②想要根據值檢查checkbox,但值是乙個字串,如「是」或「否」而不是布林值

③有乙個以位元組為單位的檔案大小,但您希望根據它的大小顯示為位元組,千位元組,兆位元組或千兆位元組。

可能性幾乎無窮無盡。

wpf值轉換器需要實現ivalueconverter介面,這個介面只需要實現兩個方法:convert()和convertback()。

顧名思義,這些方法將用於將值轉換為目標格式,然後再返回。

讓我們實現乙個簡單的轉換器,它將乙個字串作為輸入,然後返回乙個布林值,以及相反的方式

x:class

="值轉換器.mainwindow"

xmlns

=""xmlns:x

=""xmlns:local

="clr-namespace:值轉換器"

title

="convertersample"

height

="140"

width

="250"

>

>

<

local:yesnotobooleanconverter

x:key

="yesnotobooleanconverter"

/>

window.resources

>

margin

="10"

>

name

="txtvalue"

/>

margin

="0,10"

>

text

="current value is: "

/>

text

="}"

>

textblock

>

>

ischecked

="}"

content

="yes"

/>

stackpanel

>

window

>

using system;

using system.windows;

using system.windows.data;

namespace 值轉換器

}public

class

yesnotobooleanconverter

:ivalueconverter

return

false;}

public

object

convertback

(object

value

,type targettype,

object parameter,

system.globalization.cultureinfo culture)

return

"no";}

}}

**分析:textblock的text和checkbox 的ischecked都是繫結在textbox的text上,當什麼都沒輸入的時候,convert方法返回為false,是個布林值。

所以textblock顯示為false,checkbox 顯示為不打勾。

當輸入yes的時候,convert方法返回為true,所以textblock顯示為true,checkbox 顯示為打勾。

wpf有20多個內建轉換器

轉換器的強大之處在於它允許你將任意資料型別轉換為另乙個完全不同的資料型別.然而,相對於大多數應用場景,你只是想改變某些值的顯示方式而沒有必要將其轉換成另乙個不同的型別,stringformat屬性則可以很好的做到這一點.

使用乙個繫結的 stringformat 屬性時,你會丟失一些使用轉換器時的靈活性,但相應地,它會更簡單易用且不會在新檔案中建立乙個新類.

stringformat 屬性的的功能就如同它的名字所表達的: 它通過簡單的呼叫 string.format 方法來格式化輸出字串

入門 WPF資料繫結 例項

binding物件的屬性 property description converter 轉換器elementname 繫結的源物件 fallbackvalue 繫結無法返回有效值時的預設顯示。mode 繫結方式 path屬性 relativesource 常用於自身繫結或者資料模板中來指定繫結的源物...

WPF之資料繫結總結

最近幾天高強度開發,暴露出不少問題,wpf還達不到信手拈來的地步,好些東西還要去看看以前的專案。平時還是要多總結的,層次高了之後關注的知識點才會更深入。下面總結下wpf的繫結相關,總結之前又看了一遍深入淺出wpf,結合平時用到的得出此文 以textbox為例,覆蓋常見的需求,其他控制項類似,1.te...

WPF雙向資料繫結總結

參考官方 例項程式 1 指定繫結源 wpf雙向資料同步 目標屬性 ui 和源屬性 cs 資料同步。實現雙向資料同步資料來源需要實現依賴屬性inotifypropertychanged介面,因為依賴屬性有垂直的內嵌變更通知機制。inotifypropertychanged是用於實現介面通知。depen...