WPF có trình chuyển đổi tích hợp cho một số loại nhất định. Nếu bạn ràng buộc thuộc tính của Hình ảnh Source
thành giá trị string
hoặc Uri
, dưới mui xe, WPF sẽ sử dụng một số ImageSourceConverter để chuyển đổi giá trị thành số ImageSource
.
Vì vậy
<Image Source="{Binding ImageSource}"/>
sẽ làm việc nếu tài sản ImageSource là một chuỗi đại diện của một URI hợp lệ để một hình ảnh.
Bạn có thể dĩ nhiên lăn chuyển đổi Binding của riêng bạn:
public class ImageConverter : IValueConverter
{
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return new BitmapImage(new Uri(value.ToString()));
}
public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
và sử dụng nó như thế này:
<Image Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}"/>
Nguồn
2008-08-21 18:38:50
(Trên thực tế bộ chuyển đổi kiểu không tạo ra một 'BitmapImage', nhưng một lớp con của' ImageSource': 'BitmapFrameDecode', là nội bộ.) –
@ H.B. Làm thế nào bạn sẽ chuyển đổi trở lại nếu bạn muốn tiếp tục thay đổi hình ảnh? – Igor
Thay thế cho trình biến đổi: Tạo thuộc tính của bạn mà bạn liên kết với (ở đây: 'ImageSource') của loại' Uri' hoặc 'BitmapImage' và đúc ở đó. Nếu bạn cần xử lý các giá trị 'null' có thể (bỏ qua thất bại, vv), hãy thêm' TargetNullValue = {x: Null} 'vào ràng buộc của bạn. – Gerrit