1

次のようなコードでImage.Source-バインディングを作成しています。String

var newBinding = new System.Windows.Data.Binding()
  {
    Path = new PropertyPath("MyImageUrl")
  };
BindingOperations.SetBinding(attachedObject, Image.SourceProperty, newBinding);

このアプローチは、たとえば、バインディングではうまく機能しますが、次の場合は、 TextBlock.TextPropertyXamlバインディングが使用する場合と同じように、変換を自動的に挿入するのが理想的です。StringImage.SourceStringBinding

<Image Source="{Binding ImageUrl}" />

Xaml バインディングの動作を模倣する独自のコンバーターを追加できることはわかっていますが、Xaml が行うことを正確に行う方法があるかどうかを確認したいと思います。

コードベースのバインド評価中に、新しいBindingものを自動的に独自の文字列 - > BitmapImage に追加する方法はありますか?ValueConverter

4

1 に答える 1

4

System.Windows.Media.ImageSource にはTypeConverterAttribute

[TypeConverter(typeof(ImageSourceConverter))]

バインディングはこれを探し、コンバーターを自動的に使用します。

を見ると、ImageSourceConverter変換できる型がわかります。

if (sourceType == typeof(string) || 
    sourceType == typeof(Stream) || 
    sourceType == typeof(Uri) || 
    sourceType == typeof(byte[]))
{
    return true;
}

このプロセスを模倣するにはTypeConverterAttribute、バインド先のプロパティの Type に a を追加する必要があります。

これを行うには、1. タイプを制御するか、2.TypeDescriptor実行時に を使用して属性を追加します。ここでこれについて質問があります。

于 2013-05-25T20:13:45.533 に答える