私はフォーラムでこれに対する解決策を探しました。似たような質問や解決策がいくつかありますが、私にはよくわかりません。もう一度質問してくれてごめんなさい...:P
セットアップについて説明します...メインアプリケーションとは別のdllとして開発されたUserControlがあります。このかなり複雑なUserControl内に、いくつかの子コントロールがあります。それらの1つは画像です。画像のSourceプロパティを公開するために、UserControlコードビハインドでDependencyPropertyを宣言しました。
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); }
}
次に、メインアプリケーションで、UserControlをメインウィンドウに配置し、そのようにリグアップしました...
<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の画像コントロールに読み込まれます。つまり、MySourceが更新され、イベントのリップル全体がトリガーされ、ImageのSourceプロパティが更新されます。
コンパイルはエラーなしで行われました。しかし、プログラムを実行しようとして、ロードしたい画像を選択すると、画像がまったく表示されません...
誰かがこれについて私に教えてくれることを願っています。何が悪かったのかを理解しようとして、本当に何時間も壁にぶつかりました。