私は、そのsourceプロパティがイメージを返すプロパティにバインドされたWPFイメージコントロールを持っています。WPF MVVM:コンバーターからビューモデルのメソッドを呼び出す
<Image Grid.Row="0"
Source="{Binding Path=ImageSrc, NotifyOnTargetUpdated=True, Converter={StaticResource imgToSrcConverter}}" />
次に、ソースプロパティにバインドされたイメージを取得し、それをbitmapImageに変換するコンバータがあります。 bitmapimageのダウンロードが終了したら、ビューモデルでメソッドを実行したいので、BitmapImageでDownloadCompletedイベントを購読しています。だから私はどのようにコンバータからのビューモデルのメソッドを呼び出すことができますか?それはMVVMの原則を破るだろうか?
コンバータ:
public class ImgToSrcConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
Image image = value as Image;
if (image != null)
{
MemoryStream ms = new MemoryStream();
image.Save(ms, image.RawFormat);
ms.Seek(0, SeekOrigin.Begin);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
bi.DownloadCompleted += new EventHandler(bi_DownloadCompleted);
return bi;
}
return null;
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
private void bi_DownloadCompleted(object sender, EventArgs e)
{
// Call my method in view model
}
}
あなたのアプリが 'BitmapImage'を持っていることが重要な場合は、ビューモデルの' ImageSrc'プロパティは 'BitmapImage'型でなければなりません。コンバータは必要ありません – ASh
私は、再達成しようとしている?ちょうどあなたがやろうとしていることについて少し詳しく説明できますか? 「ダウンロード」とはどういう意味ですか?この「ダウンロード」が完了したら、あなたは何をしていますか? –