iT邦幫忙

DAY 3
7

Windows Phone 程式開發系列 第 3

[WP 開發] Converter 綁定值轉換

在先前的文章讀取 facebook 粉絲團 RSS
http://www.dotblogs.com.tw/chou/archive/2013/09/11/118178.aspx
發生了讀取出來的資料有亂碼的狀況,透過 HttpUtility.HtmlDecode 方法將經過 HTTP 傳輸而進行 HTML 編碼的字串轉換為解碼的字串。在處理過程中,我們是在 Model 將資料加入 Items 時對字串做處理。
除了這樣的方式外,我們也可以透過 Converter 做綁定值的轉換。

本文刊載於
http://www.dotblogs.com.tw/chou/archive/2013/09/12/118258.aspx

在這篇文章您可以學到:
透過 Converter 綁定值轉換。

練習前

請先下載先前文章讀取 facebook 粉絲團 RSS 的範例

開啟 MainViewModel.cs,將

Title = HttpUtility.HtmlDecode(item.Title.Text)

改回

Title = item.Title.Text

如下圖所示

新增 Converter

先新增類別

http://files.dotblogs.com.tw/chou/1309/Windows-Phone-Converter_F892/image_thumb_3.png

名稱改為 TilteConverter.cs。

新增後的畫面。

Converter 需要繼承並且實作 IValueConverter 介面,此介面提供將自訂邏輯套用至繫結的方法。

在這邊順便介紹一些小技巧,首先我們先讓 TitleConverter 繼承 IValueConverter,由於尚未引入 namespace 因此錯誤。

我們可以透過解析的功能,在 IValueConverter 按滑鼠右鍵,選擇 [解析],選擇 namespace。

自動加入 namespace 到程式碼中,接著在 IValueConvert 上按滑鼠右鍵,選擇 [實作介面],選擇 [實作介面]。

可以看到包含兩個方法 Convert 和 ConvertBack。

修改 Convert 內容,將傳入的 value 透過 HttpUtility.HtmlDecode 轉換。

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    return HttpUtility.HtmlDecode(value.ToString());
}

將 class 改為 public。

將 Converter 加入應用程式資源 Application.Resources

開啟 App.xaml

將以下代碼加入 Application.Resources

<converter:TitleConverter xmlns:converter="clr-namespace:MvpRssPhoneApp" x:Key="TitleConverter" />

使用 Converter

開啟 MainPage.xaml 設計畫面,將顯示 Title 資訊的 TextBlock,Text 的部分,加上 Converter 進行綁定值轉換。

執行

我在 Converter 加入中斷點,當程式執行時,可以看到資料轉換的狀況。

執行結果。


上一篇
[WP 開發] 讀取 facebook 粉絲團 RSS
下一篇
[WP 開發] 使用 Html Agility Pack 取得統一發票資訊
系列文
Windows Phone 程式開發27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

我要留言

立即登入留言