2 回答
TA贡献1829条经验 获得超6个赞
在遇到与您相同的问题并进行一些阅读后,我发现了解决方案 - 包URI。
我在代码中做了以下事情:
Image finalImage = new Image();finalImage.Width = 80;...BitmapImage logo = new BitmapImage();logo.BeginInit();logo.UriSource = new Uri("pack: //application:,,,/AssemblyName;component/Resources/logo.png");logo.EndInit();...finalImage.Source = logo;
或更短,使用另一个BitmapImage构造函数:
finalImage.Source = new BitmapImage( new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png"));
URI分为几部分:
权威:
application:///
路径:编译为引用的程序集的资源文件的名称。路径必须符合以下格式:
AssemblyShortName[;Version][;PublicKey];component/Path
AssemblyShortName:引用的程序集的简称。
; Version [可选]:包含资源文件的引用程序集的版本。当加载两个或多个具有相同短名称的引用程序集时,将使用此方法。
; PublicKey [可选]:用于对引用的程序集进行签名的公钥。当加载两个或多个具有相同短名称的引用程序集时,将使用此方法。
; component:指定从本地程序集引用所引用的程序集。
/ Path:相对于引用程序集的项目文件夹的根目录的资源文件的名称,包括其路径。
之后的三个斜线application:
必须用逗号替换:
注意:包URI的权限组件是指向包的嵌入式URI,必须符合RFC 2396.此外,“/”字符必须替换为“,”字符和保留字符,例如“%”和“?” 必须逃脱。有关详细信息,请参阅OPC。
当然,请确保将图像上的构建操作设置为Resource
。
TA贡献1824条经验 获得超5个赞
很容易:
要动态设置菜单项的图像,只需执行以下操作:
MyMenuItem.ImageSource = new BitmapImage(new Uri("Resource/icon.ico",UriKind.Relative));
...而“icon.ico”可以位于任何地方(目前它位于“资源”目录中),并且必须作为资源链接...
- 2 回答
- 0 关注
- 508 浏览
添加回答
举报