3

WPF 很棒,因为我应该能够在整个应用程序中使用 {StaticResource MyBackground} 而不是“White”,然后通过更改资源定义重新定义整个应用程序的外观。

问题是如果您在子控件中有对全局资源的引用,Expression Blend 将无法正常工作。有没有其他方法可以为您的应用程序设置主题?我不愿意失去 Blend 设计器的支持,或者在每个控件中复制一段代码/xaml。我发现他们没有修复如此严重的错误令人震惊。

有任何想法吗?

干杯

4

2 回答 2

1

所以我没有尝试过,但听起来它会起作用。此外,信息有点过时了。请让我知道它是否解决了问题。:)

Blend 博客中,将以下两个块添加到您的项目文件中:

<DesignTime Condition="'$(SolutionPath)'!='' AND Exists('$(SolutionPath)')">true</DesignTime>

…. 
<ApplicationDefinition Condition="'$(DesignTime)'=='true' AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true'" Include="App.xaml"> 
      <Generator>MSBuild:Compile</Generator> 
      <SubType>Designer</SubType> 
</ApplicationDefinition>

基本上,这会将您的 app.xaml 有条件地包含到您的项目中,以便在设计时使用它,而不是在构建时使用。我猜他们假设人们使用 msbuild 来生成生产代码,而不是单击构建编译按钮。

于 2012-04-03T23:43:03.173 回答
0

如果您改用 DynamicResources,似乎此错误会消失。

在 b) 中解释:http: //blogs.msdn.com/b/unnir/archive/2009/03/31/blend-wpf-and-resource-references.aspx

有人在较早的 SO 问题中发布了这个链接,关于同一个错误,但由于某种原因,它没有得到支持,并且在其他答案下方丢失。

于 2012-04-03T22:20:41.557 回答