| 在綁定數據中 有時候我們需要轉換相關數據類型 silverlight提供了一個System.Windows.Data.IValueConverter接口 它提供兩個方法 Convert和ConvertBack??前者是資源到目標元素時轉換??后者是目標到資源時轉換? 先創建一個類型? ? ? public class DataTimeConvert : System.Windows.Data.IValueConverter ? ? { ? ?? ???// 參數: ? ?? ???//? ?value: ? ?? ???//? ???正傳遞到源的目標數據。 ? ?? ???// ? ?? ???//? ?targetType: ? ?? ???//? ???源對象需要的數據的 System.Type。 ? ?? ???// ? ?? ???//? ?parameter: ? ?? ???//? ???要在轉換器邏輯中使用的可選參數。 ? ?? ???// ? ?? ???//? ?culture: ? ?? ???//? ???轉換的區域性。 ? ?? ???// ? ?? ???public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) ? ?? ???{ ? ?? ?? ?? ?return??(value).ToString(); //string _value = value.ToString(); //if (_value != null) //{ // //MessageBox.Show(_value + " if"); // return ((_value).Equals("1") ? "啟用" : "停用"); //} //else //{ // //MessageBox.Show(value + " else"); // return 33; //} ? ? ? ?? ???} ? ?? ???// 參數: ? ?? ???//? ?value: ? ?? ???//? ???正傳遞到源的目標數據。 ? ?? ???// ? ?? ???//? ?targetType: ? ?? ???//? ???源對象需要的數據的 System.Type。 ? ?? ???// ? ?? ???//? ?parameter: ? ?? ???//? ???要在轉換器邏輯中使用的可選參數。 ? ?? ???// ? ?? ???//? ?culture: ? ?? ???//? ???轉換的區域性。 ? ?? ???// ? ?? ???public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) ? ?? ???{ //if (targetType != typeof(int)) throw new InvalidOperationException("轉換的值必須是字符!"); //return (value.ToString() == "啟用" ? 1 : 0); ? ?? ?? ?? ?return value.ToString(); ? ?? ???} 然后xaml代碼? <UserControl x:Class="SilverlightApplication1.convertControl" ? ? xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ? ? xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ? ? xmlns:d="http://schemas.microsoft.com/expression/blend/2008" ? ? xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" ? ? mc:Ignorable="d" ? ? d:DesignHeight="300" d:DesignWidth="400" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:my="clr-namespace:SilverlightApplication1"> ? ? <UserControl.Resources> ? ?? ???<my:DataTimeConvert x:Key="DataTimeConvert1" /> //這是轉換實例化 ? ? </UserControl.Resources> ? ? <Grid x:Name="LayoutRoot" Background="White"> ? ?? ???<TextBox Height="23" HorizontalAlignment="Left" Margin="32,23,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" /> ? ?? ? <TextBox Height="23" HorizontalAlignment="Left" Margin="170,23,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="{Binding Path=Text, Mode=TwoWay, ElementName=textBox1,?Converter={StaticResource DataTimeConvert1}}" /> ? ? </Grid> </UserControl>
請用vs 在轉換類型中兩個方法設置斷點 在瀏覽器測試輸入文字進行觀察 |