WPFには、特定の種類のコンバータが組み込まれています。イメージのSource
プロパティをstring
またはUri
の値にバインドすると、フードの下でWPFはImageSourceConverterを使用して値をImageSource
に変換します。
ので
<Image Source="{Binding ImageSource}"/>
ImageSourceはプロパティは、画像への有効なURIの文字列表現した場合に動作します。
あなたはもちろん、独自のバインディングコンバータロールバックすることができます:
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();
}
}
をし、このようにそれを使用する:アトゥール・グプタによって
<Image Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}"/>
(実際にはタイプコンバータは 'BitmapImage'を作成しませんが、' ImageSource'のもう一つのサブクラス: 'BitmapFrameDecode'、内部にあります。) –
@ H.B。画像の変更を維持したい場合は、どのように元に戻しますか? – Igor
コンバーターの代わりに:あなたがバインドしたプロパティ(ここで 'ImageSource')を' Uri'または 'BitmapImage'タイプにしてそこにキャストします。可能な 'null'値(キャスト失敗など)に対処する必要がある場合、あなたのバインディングに' TargetNullValue = {x:Null} 'を追加してください。 – Gerrit