2009-01-09 56 views
2

我试图做一些相当简单的事情:添加一个简单的图标到应用程序的主窗口。这可以很容易地完成。图标本身放置在资源目录中,其构建操作设置为资源。该窗口的XAML代码包含对此图标的引用:如何在WPF中正确(希望在XAML中)正确链接资源?

Icon="Resources/wiser.ico" 

这很有效。然而,我真正想要做的是从另一个地方抓取这个图标,这是一个在我们的应用程序的几个版本之间共享的图像目录(根据您的计算方式,我们支持大约5个平台)。在我们的WinForms过去,这是通过将资源添加为现有项目并从对话框中选择“作为链接添加”来完成的。但是,这会导致上述图标出现问题。

首先,它不会在组装中的适当位置结束。 Reflector在应用程序的基本路径中找到它,而不是在它应该在的Resources目录中。图标的非链接版本确实出现在资源目录中。

其次,路径修复(Icon =“wiser.ico”)允许编译的东西,但会让设计者抛出一个错误,导致设计器本身无用。

我怀疑这只是一个错误(或两个,取决于你如何计数)。有没有简单的方法呢?请注意,我曾希望支持源代码控制系统的链接,但SVN似乎并未支持这种链接,并且最终结果可能会导致无法维护。

1)你可以把你的资源,你可以在你的应用程序共享一个单独的组件:我能想到的资源共享

+0

@Ken:非常好的问题。事实上,我在开发自己的WPF应用程序时遇到了同样的问题,并没有找到解决方案。你有没有在MS Connect上提交过这个?对我来说,这看起来像是一个错误,尽管我希望为了当前的发展而存在一种解决方法。 – Noldorin 2009-07-09 23:06:55

+0

这是我在网上唯一可以找到的其他地方确认问题:http://learnwpf.com/Posts/Post.aspx?postId=f90013aa-2164-4c56-a672-4136b2dc493b。不幸的是,它没有提供解决方法。 – Noldorin 2009-07-09 23:15:32

回答

1

两件事情。

使用此语法获得ICO或其它项目(PNG,XAML等)进行组装的:

Icon="/CommonResources;component/app.ico" 

或使用包语法

Icon="pack://application:,,,/CommonResources;component/app.ico" 

2)你可以使用打包应用程序语法以将ICO加载到程序集的相对文件路径中。

Icon="pack://siteoforigin:,,,/app.ico"