简短版
如何处理在嵌入到其他窗口/用户/自定义控件中的UserControl中的静态资源查找?这样,Blend 4可以在设计时正确地呈现它,而Visual Studio已经为您完成了。详细版
正如问题所述,我们有一个窗口,其中包含一些嵌入的用户控件,窗口以及每个嵌入的用户控件都使用静态资源标记扩展来解析在app.xaml文件中合并的字典中找到的资源的引用。当我单独打开在VS Designer Surface中制作的任何示例用户控件时,Blend没有任何加载和呈现的问题。它没有任何问题解析我几乎在任何地方使用的无数静态资源标记扩展。
每当我尝试打开我的“MainWindow.xml”(一个窗口控件)时,我注意到我会得到4个- 无法创建类型实例错误,Blend 4很好地告诉我在ArtBoard上捕获了一些设计时异常。通过将VS调试器实例附加到Blend中,进一步深入挖掘这些异常,我注意到我引用的每个静态资源,它都抱怨找不到它。
作为比较,我看了看我创建的一个自定义控件,它根本没有使用任何静态资源,而是使用了本地资源。当我注意到将此自定义控件嵌入到UserControl中时,它工作得非常好。我认为这很明显!
在SO上,有没有人有任何想法如何解决这个问题?我尝试了整个“添加设计时字典”<--部分工作,嵌入的用户控件仍然根本没有被创建!
研究
- MVVM Light + Blend designer view error: Cannot find resource named 'Locator'
- Theming using resources without Blend vomitting
更新:可能的解决方案:
- 采用此处提供的类似方法:GianlucaCucco Answer
- 将所有静态资源查找转换为UserControl的本地资源?
- 将所有静态资源查找转换为动态资源。
这些解决方案都不太好看。=(