c# – 从代码中访问资源以设置NotifyIcon.Icon
我试图在
WPF中获取NotifyIcon的图标.
所以我在一个Resources文件夹中为我的解决方案添加了一个.ico文件,并将构建操作设置为Resource. 我试图在代码后面抓住这个资源,如下所示: var icon =(Icon)Application.Current.FindResource(“/ Resources / icon.ico”) 这不起作用. 除此之外:Application.Current.Resources.Count返回0. 编辑 var i = new Icon(Application.GetResourceStream(new Uri(“/ systemtrayicon.ico”,UriKind.Relative)).Stream); 将根中的图标和构建操作设置为Resource. 还是行不通. 再次编辑: 我需要清理解决方案并按照:WPF throws “Cannot locate resource” exception when loading the image重建 解决方法
您必须将resourceName作为参数传递给FindResource方法,而不是Resource的路径.示例代码如下所示:
var icon = (Icon) Application.Current.FindResource("myImage") 请注意,在上面的示例代码中,“myImage”是资源名称. 请参阅MSDN上的Application.FindResource方法. 你说,Application.Current.Resources.Count为零,这意味着你没有在App.xaml文件中定义任何资源. 您可以像这样向App.xaml添加资源: <Application.Resources> <Image x:Key="myImage" Source="img.png" /> </Application.Resources> 您的图标似乎是嵌入式资源. FindResource无法使用嵌入式资源.将您的图标的BuildAction设置为Resource. 有关WPF资源的更多信息,请参阅this MSDN页面. UPDATE 访问嵌入式资源的代码 Assembly.GetExecutingAssembly().GetManifestResourceStream("myImg.png"); 但是,如果您已将此映像添加到Resources.Resx,您应该只能使用Resources.ResourceName. 更新2 向App.xaml或任何ResourceDictionary添加资源更好,因此您可以通过StaticResource或DynamicResource标记扩展将它们用作静态/动态资源. 如果您不想将其添加到App.xaml资源并仍想访问它,我上面提到的一个选项是将它添加到Resources.Resx并使用Resources.ResourceName来引用图标/图像 另一种方法是自己创建System.Drawing.Icon,示例代码: new System.Drawing.Icon(Application.GetResourceStream(new Uri("/Resources/icon.ico"))); 就个人而言,我会使用XAML资源并将它们添加到App.xaml或ResourceDictionary. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |