我正在学习C#,并且一直在尝试使用WPF中的URI。我已经在谷歌上搜索了很多,但是没有什么收获。
基本上,我想在Car对象的属性中存储一个BitmapImage对象。然后,我希望在WPF窗体上的Image控件中显示BitmapImage。
这个应用程序是一个简单的应用程序(它是为大学作业而设计的),因此没有数据库等等。
我有两种方法可以做到这一点。第一种方法是从文本文件中预加载Car数据,包括我要加载的JPG文件的文件名。我已经在源代码和类文件所在的主目录下设置了一个名为Files的目录,并将JPG文件设置为“内容”和“始终复制”。当我运行调试时,它会将Files目录和JPG复制到debug\bin目录中。
我的代码通过以下方式使用URI引用JPG来创建BitmapImage:
基本上,我想在Car对象的属性中存储一个BitmapImage对象。然后,我希望在WPF窗体上的Image控件中显示BitmapImage。
这个应用程序是一个简单的应用程序(它是为大学作业而设计的),因此没有数据库等等。
我有两种方法可以做到这一点。第一种方法是从文本文件中预加载Car数据,包括我要加载的JPG文件的文件名。我已经在源代码和类文件所在的主目录下设置了一个名为Files的目录,并将JPG文件设置为“内容”和“始终复制”。当我运行调试时,它会将Files目录和JPG复制到debug\bin目录中。
我的代码通过以下方式使用URI引用JPG来创建BitmapImage:
BitmapImage myImage = new BitmapImage (new Uri("Files/" + Car.Imagefilename, UriKind.Relative);
Car.Image = myImage;
ImageControl.Source = myImage;
如果我在调试器中逐步执行此代码,有时它可以正常工作并显示图像,但大多数情况下都不行。
我的第二个方法是当用户创建一个新的汽车时。这种方法总是能够正常工作。在这种方法中,我使用文件对话框(dlg)选择图像并使用绝对路径。
BitmapImage myImage = new BitmapImage (new Uri(dlg.Filename, UriKind.Absolute);
Car.Image = myImage;
ImageControl.Source = myImage;
所以......我想不通为什么第一种方法不起作用。我认为这与相对引用有关,但我无法弄清楚如何正确地语法化来使其工作。我尝试使用"pack:,,,",我尝试添加"component",我尝试在"pack"之前加上"@"。我似乎找不到一个简单解释这个问题的东西。
如果这很简单,那就请原谅,但是它让我头疼!感激任何指针。