一、0,1轉換成true,false用於綁定類似CheckBox中的IsChecked屬性:
public class BoolConverter : IValueConverter<br /> {<br /> public object Convert(object value, Type targetType, object parameter, CultureInfo culture)<br /> {<br /> string s = (string)value;<br /> bool b;<br /> if (s ==null || s.Trim().Length == 0 || s == "0")<br /> b = false;<br /> else<br /> b = true;<br /> return b;<br /> }<br /> public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)<br /> {<br /> string strValue = (bool)value?"1":"0";<br /> return strValue;<br /> }<br /> }
二、時間字串轉換
#region 為日期定義轉換器<br /> //定義一個轉換類 並被頁面引用為資源<br /> /*<br /> * IValueConverter - 值轉換介面,將一個類型的值轉換為另一個類型的值。它提供了一種將自訂邏輯應用程式於綁定的方式<br /> * Convert - 正向轉換器。將值從資料來源傳給繫結目標時,資料繫結引擎會調用此方法<br /> * ConvertBack - 反向轉換器。將值從繫結目標傳給資料來源時,資料繫結引擎會調用此方法<br /> */<br /> /// <summary><br /> /// 正向轉換器。將值從資料來源傳給繫結目標時,資料繫結引擎會調用此方法<br /> /// </summary><br /> /// <param name="value">轉換之前的值</param><br /> /// <param name="targetType">轉換之後的類型</param><br /> /// <param name="parameter">轉換器所使用的參數</param><br /> /// <param name="culture">轉換器所使用的地區資訊</param><br /> /// <returns>轉換後的值</returns><br /> public class DateTimeConverter : IValueConverter<br /> {<br /> public object Convert(object value,<br /> Type targetType,<br /> object parameter,<br /> CultureInfo culture)<br /> {<br /> DateTime date = (DateTime)value;<br /> return date.ToString("yyyy-MM-dd");<br /> }<br /> /// <summary><br /> /// 反向轉換器。將值從繫結目標傳給資料來源時,資料繫結引擎會調用此方法<br /> /// </summary><br /> /// <param name="value">轉換之前的值</param><br /> /// <param name="targetType">轉換之後的類型</param><br /> /// <param name="parameter">轉換器所使用的參數</param><br /> /// <param name="culture">轉換器所使用的地區資訊</param><br /> /// <returns>轉換後的值</returns><br /> public object ConvertBack(object value,<br /> Type targetType,<br /> object parameter,<br /> CultureInfo culture)<br /> {<br /> string strValue = value.ToString();<br /> DateTime resultDateTime;<br /> if (DateTime.TryParse(strValue, out resultDateTime))<br /> {<br /> return resultDateTime;<br /> }<br /> return value;<br /> }<br /> }<br /> #endregion
使用方法如下:
首先在需要使用轉換的頁面中加入下語句:
xmlns:local="clr-namespace:XXX" //XXX是你Silverlight的項目命名空間
然後添加:
<UserControl.Resources>
<local:DateTimeConverter x:Key="DateTimeConverter" />
<local:BoolConverter
x:Key="BoolConverter
" />
</UserControl.Resources>
<CheckBox x:Name="chk1" Content="我是CheckBox" IsChecked="{Binding 資料庫表欄位,Convert={StaticResource BoolConverter }}" Margin="5" />
三、Image圖片Source屬性綁定
定義一個轉換器IconConverter類
// Icon是源類型,ImageSource是目標類型。
[ValueConversion(typeof(Icon), typeof(ImageSource))]
//繼承了 IValueConverterpublic class IconConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { Icon icon = (Icon)value; Bitmap bitmap = icon.ToBitmap(); IntPtr hBitmap = bitmap.GetHbitmap(); ImageSource bitmapSource = Imaging.CreateBitmapSourceFromHBitmap( hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); return bitmapSource; } //下面的函數是為了實現上面轉換的逆操作的,這裡我們不需要把ImageSource再變成Icon所以沒有寫具體的實現 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); }}最後把資料再重新綁定一下,1、添加引用:xmlns:local="clr-namespace:轉換器所在命名空間"2、添加資源:<local:IconConverter x:Key="iconConverter"/>3、綁定轉換器資料:<Image Source="{Binding Path=MenuIcon, Converter={StaticResource iconConverter}}" />OK,問題解決了。