如何将图像加载到wpf中的图像控件?

时间:2013-11-05 05:12:46

标签: wpf image mvvm

我正在使用mvvm模式在wpf中开发一个应用程序。

在我的应用程序中,我需要选择一个图像并在表单中显示,然后将其保存到数据库中。

以wpf格式,我正在使用图像控件来显示图像。

在我的视图模型中,我打开文件对话框并分配图像属性。

BitmapImage image;
public BitmapImage Image
{
    get { return image; }
    set
    {
        image = value;
        RaisePropertyChanged("Image");
    }
}

...

OpenFileDialog file = new OpenFileDialog();
Nullable<bool> result =file.ShowDialog();

if (File.Exists(file.FileName))
{
    image = new BitmapImage();
    image.BeginInit();
    image.UriSource = new Uri(file.FileName, UriKind.Absolute);
    image.EndInit();
}

我的xaml部分是

 <Image Height="144" HorizontalAlignment="Left" Source="{Binding Image}"
        Margin="118,144,0,0" Name="imgData" Stretch="Fill" VerticalAlignment="Top" Width="340" />

我无法在表单中看到图片。 请帮帮我。

感谢。 NS

1 个答案:

答案 0 :(得分:2)

您必须分配Image属性,而不是image字段。否则,PropertyChanged事件不会被提升:

if (File.Exists(file.FileName))
{
    Image = new BitmapImage(new Uri(file.FileName, UriKind.Absolute));
}

另请注意,将Image属性声明为ImageSource类型是有意义的,BitmapImageImageSource的基类。这将允许将从BitmapFrame派生的其他类型的实例分配给该属性,例如WriteableBitmap或{{1}}。