Silverlight中的一些Convert整理

來源:互聯網
上載者:User

一、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,問題解決了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.