1

我正在使用 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" />

我无法在表格中看到图像。如何?

4

1 回答 1

2

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

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

Image另请注意,将属性声明为 type是有意义的ImageSource,它是 的基类BitmapImage。这将允许将派生自的其他类型的实例ImageSource分配给该属性,例如BitmapFrameor WriteableBitmap

于 2013-11-05T07:00:15.893 回答