我有一個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
我不確定我是否理解您的'重新嘗試實現?你能否詳細說明你想要做什麼? 「下載」是什麼意思?當這個「下載」完成時你會做什麼? –