【问题标题】:How can I address (hopefully in XAML) a linked resource properly in WPF?如何在 WPF 中正确处理(希望在 XAML 中)链接资源?
【发布时间】:2009-01-09 15:58:37
【问题描述】:

我正在尝试做一些相当简单的事情:在应用程序的主窗口中添加一个简单的图标。这可以很容易地完成。图标本身放置在 Resources 目录中,其构建操作设置为 Resource。窗口的 XAML 代码包含对此图标的引用:

Icon="Resources/wiser.ico"

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

首先,它没有出现在程序集中的正确位置。 Reflector 在应用程序的基本路径中找到它,而不是在它应该在的 Resources 目录中。图标的非链接版本确实出现在 Resources 目录中。

其次,对路径 (Icon="wiser.ico") 的修复允许编译但让设计器抛出错误,使设计器本身无用。

我怀疑这只是一个错误(或两个,取决于您的计数方式)。有没有一种简单的方法来解决这个问题?请注意,我曾希望支持从我们的源代码控制系统进行链接,但 SVN 似乎不支持,最终结果可能会让人难以维护。

【问题讨论】:

  • @Ken:很好的问题。事实上,我在开发自己的 WPF 应用程序时遇到了同样的问题,但还没有找到解决方案。你有没有在 MS Connect 上提交过这个?这对我来说确实是一个错误,但我确实希望为了当前的开发存在一种解决方法。
  • 这是我能在网上找到的唯一可以确认问题的其他地方:learnwpf.com/Posts/…。不幸的是,它没有提供任何解决方法。
  • 不,我从来没有在 MS Connect 上提到过这个。请随意这样做。

标签: c# wpf


【解决方案1】:

我能想到的共享资源的两件事:

1) 您可以将资源放在一个单独的程序集中,以便在您的应用程序之间共享。

使用此语法从程序集中获取 ico 或其他项目(png、xaml 等):

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

或使用包语法

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

2) 您可以使用 pack 应用程序语法将 ico 加载到程序集的相对文件路径中。

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

【讨论】:

  • 谢谢,但这不是真正的问题。如果我可以让 VS 设计者识别它,我可以正确地处理资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 2018-08-19
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
相关资源
最近更新 更多