我想在我的对话框上显示一个图像,该图像可以位于相对于.exe所在目录的目录中,例如
project
- data
-- logo //<-- that's where the image is located
-bin //<-- that's where the .exe is in
.exe中应包含默认图像,但在显示对话框时,应先检查\ data \ logo目录,如果找到具有给定文件名的图像,则应使用该图像进行显示而不是在.exe中的那个。
关于如何做到这一点的任何想法?
谢谢,
tabina
答案 0 :(得分:1)
使用pack URI
pack://application:,,,/ReferencedAssembly;component/data/logo/image.png
答案 1 :(得分:0)
当他要求提供相对于exe的文件夹时,我建议他表示徽标应位于文件系统内(例如c:\ program files \ MyApp \ data \ logo)。所以我会检查文件是否存在
File.Exists("/data/logo/logo.png")
如果返回false,则可以加载嵌入的资源。
//修改
如果在Visual Studio IDE中使用此代码段,则路径位于
<Project directory>/bin/debug/data/logo
答案 2 :(得分:0)
我现在正在做的是
// set the logo
string path = Environment.CurrentDirectory + "\\data\\logo\\logo.gif";
var uri = new Uri(path, UriKind.Absolute);
try
{
this.myImg.Source = new BitmapImage(uri);
}
catch (Exception e)
{
this.myImg.Source = new BitmapImage(new Uri(@"pack://application:,,,/myAssemblyName;component/Images/logo.gif"));
}
这很好用,但我不喜欢这个是它全部写在代码隐藏中。我宁愿让它更容易重复使用。 有没有办法将它全部放入模板并将其应用于视图箱/图像?
谢谢,
tabina