1.将数据格式转换为字符串表示形式(如将数字转换为货币)
//实现了IValueConverter接口的值转换器类,实现Convert和ConvertBack方法
public class NumberToCurrencyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
decimal number = (decimal)value;
return number.ToString("C", culture);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string currency = value as string;
decimal number;
if (Decimal.TryParse(currency, NumberStyles.Currency, culture, out number))
{
return number;
}
return DependencyProperty.UnsetValue;
}
}
在XAML中使用这个值转换器进行数据绑定
<TextBlock Text="{Binding Path=Price, Converter={StaticResource NumberToCurrencyConverter}}" />
2.创建特定类型的WPF(读取二进制、创建能绑定大image元素的BitmapImage对象):
创建值转换器类:
//从二进制数据转换为图像
public class BinaryToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
byte[] binaryData = value as byte[];
if (binaryData == null)
return null;
BitmapImage image = new BitmapImage();
using (MemoryStream stream = new MemoryStream(binaryData))
{
image.BeginInit();
image.CacheOption = BitmapCacheOption.OnLoad;
image.StreamSource = stream;
image.EndInit();
}
return image;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
//从文件名称数据转换为图像数据
public class ImagePathConverter : IValueConverter
{
private string imageDirectory = Directory.GetCurrentDirectory();
public string ImageDirectory
{
get { return imageDirectory; }
set { imageDirectory = value; }
}
//文件名转换为图片
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string imagePath = Path.Combine(ImageDirectory, (string)value);
return new BitmapImage(new Uri(imagePath));
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException("The method or operation is not implemented.");
}
}
在XAML中使用这个值转换器进行数据绑定:
<Image Source="{Binding Path=ImageData, Converter={StaticResource BinaryToImageConverter}}" />
3.根据绑定数据有条件地改变元素中的属性(改变元素背景色以突出显示位于特定范围内的数值):
创建值转换器类:
public class NumberToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double number = (double)value;
if (number >= 0 && number <= 10)
return Brushes.Green;
else if (number > 10 && number <= 20)
return Brushes.Yellow;
else
return Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在XAML中使用这个值转换器进行数据绑定:
<TextBox Background="{Binding Path=Score, Converter={StaticResource NumberToColorConverter}}" />
*Convert方法用于从源数据类型转换为目标数据类型,ConvertBack方法用于从目标数据类型转换回源数据类型,在某些情况下,你可能不需要或不能执行反向转换,那么你可以在ConvertBack方法中抛出一个NotImplementedException。
2814

被折叠的 条评论
为什么被折叠?



