原文:
wpf中在xaml中實現資料型別轉換的兩種方法
熟悉資料繫結的朋友都知道,當我們在model中獲取乙個物件的資料,常常需要對其進行資料轉換後顯示在ui介面上,比如你用bool型別儲存了乙個人的性別,但是在介面上卻需要經過轉化後顯示為男或女;
今天又把資料繫結部分又看了一下,在這裡就算是做個總結吧!
方法一:當我們定義乙個類,該類中又有該類型別的乙個屬性,那麼如果我們只是在xaml中使用簡單的資料繫結的話,程式就會出現問題,究其原因就是程式無法正確對該類的物件的類型別的屬性無法正確轉化,所以我們需要自定義乙個轉換類,該類繼承typeconverter,並需要重寫乙個該類的乙個成員函式convertfrom,並且為需要進行轉換的類新增乙個型別轉換的屬性,最後在xaml中進行靜態資源的使用就可以了!
相應類的示例**如下所示:
human.cs
[typeconverterattribute(typeof(childconvertertohuman))]
public class human
public human child
}public class childconvertertohuman : typeconverter
}
mainwindow.xaml<
window.resources
>
<
local:human
x:key
="human"
name
="hippie" child="tom"
/>
window.resources
>
這樣我們就可以正確轉化human物件的child的屬性的資料型別;
human hu = this.findresource("human
") as
human;
if (hu != null
)
方法二:道理和方法一是一樣,依然需要定義乙個型別轉換的類,但是需要繼承的類是ivalueconverter類,需要我們重寫convert和convertback函式(一般重寫convert就可以)
publicclass
person
public
bool gender
}public
class
converter : ivalueconverter
else
}//////
ui to model
/// ///
//////
//////
public
object convertback(object value, type targettype, object
parameter, system.globalization.cultureinfo culture)
}
<window.resources
>
<
local:converter
x:key
="converter"
/>
window.resources
>
<
grid
>
<
stackpanel
>
<
stackpanel
x:name
="sp"
orientation
="horizontal"
>
<
textblock
text=""
fontsize
="20"
margin
="0,0,24,0"
/>
<
textblock
text="}
"fontsize
="20"
/>
stackpanel
>
stackpanel
>
grid
>
person p = newperson
; sp.datacontext = p;
這樣我們就可以將不同的資料型別通過一定的轉化顯示在程式介面上了!
學習WPF 了解WPF中的XAML
xaml的簡單說明 xaml是用於例項化.net物件的標記語言,主要用於構建wpf的使用者介面 xaml中的每乙個元素都對映為.net類的乙個例項,例如對映為wpf的button物件 xaml可以在乙個元素中巢狀另乙個元素,例如grid元素可以巢狀button元素 了解xaml visualstud...
學習WPF 了解WPF中的XAML
xaml的簡單說明 xaml是用於例項化.net物件的標記語言,主要用於構建wpf的使用者介面 xaml中的每乙個元素都對映為.net類的乙個例項,例如對映為wpf的button物件 xaml可以在乙個元素中巢狀另乙個元素,例如grid元素可以巢狀button元素 了解xaml visualstud...
WPF中XAML命名空間對映
本主題進一步解釋每個可擴充套件應用程式標記語言 xaml 檔案的根標記中存在的兩個命名空間對映及其用途,同時還介紹如何生成類似的對映,以便使用在您自己的 中和 或單獨的程式集中定義的元素。wpf 和 xaml 命名空間宣告 在許多可擴充套件應用程式標記語言 xaml 檔案的根標記中的命名空間宣告內,...