私はフォーラムでこれに対する解決策を探しました。同様の質問と解決策がいくつかありますが、私はそれらを本当に理解できません。 PUserControlのDependencyPropertyが公開されていますが、バインドできません。
私の設定を説明しましょう...私はメインアプリケーションから別のdllとして開発されたUserControlを持っています。この複雑なUserControl内には、いくつかの子コントロールがあります。それらの1つはイメージです。 UserControlコードビハインドでDependencyPropertyを宣言して、ImageのSourceプロパティを公開しました。
public static DependencyProperty MyImageSourceProperty = DependencyProperty.Register("MyImageSource", typeof(ImageSource), typeof(MyUserControl), new UIPropertyMetadata(null));
public ImageSource MyImageSource
{
get { return (ImageSource)GetValue(MyImageSourceProperty); }
set { SetValue(MyImageSourceProperty, value); }
}
はその後、私の主な用途では、私は私のメインウィンドウにユーザーコントロールを配置して、このような...
<controls:MyUserControl Name="MyControl" MyImageSource={Binding MySource}/>
MYSOURCEが私のメインウィンドウのViewModelにに宣言されているとしてそれを装備しました。
public string MySource
{
get { return this.mySource; }
set { if (value == mySource)
return;
this.mySource = value;
OnPropertyChanged("MySource");
}
}
基本的には、プログラムは、このようなとして機能するようになっている: 1)ユーザーは、メインウィンドウ内のボタンをクリックします。 2)openFileDialogがポップアップし、読み込む画像ファイルを選択します。 3)選択を確定すると、イメージはMyUserControlのImageコントロールに読み込まれます。私。 MySourceが更新され、イベントのリップル全体がトリガされ、ImageのSourceプロパティが更新されます。
編集は間違いなく行われました。しかし、私がプログラムを実行しようとすると、ロードしたい画像を選択すると、画像はまったく表示されません...
誰かが私にこのことを教えてくれることを願っています。本当にたくさんの事前のおかげで...何が悪かったのかを把握しようとしている時間の壁に....叩い
問題を解決するのに役立つビジュアルスタジオコンソールにバインドエラーがあります。 – Jonas
フォームのデータソースとしてフォームのクラスを指定しましたか?それ以外の場合:どのオブジェクトに 'MySource'プロパティが含まれているかを彼女がどのようにコントロールするべきでしょうか?たとえば、コンストラクタでこれを行うことができます。 –
ImageSourceプロパティを文字列に直接バインドすることはできません。 詳細については、[WPFでImage.SourceをStringにバインドする](http://stackoverflow.com/questions/2573912/binding-image-source-to-string-in-wpf)を参照してください。 – DmitryG