我正在使用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
答案 0 :(得分:2)
您必须分配Image
属性,而不是image
字段。否则,PropertyChanged事件不会被提升:
if (File.Exists(file.FileName))
{
Image = new BitmapImage(new Uri(file.FileName, UriKind.Absolute));
}
另请注意,将Image
属性声明为ImageSource
类型是有意义的,BitmapImage
是ImageSource
的基类。这将允许将从BitmapFrame
派生的其他类型的实例分配给该属性,例如WriteableBitmap
或{{1}}。