WPF非常棒,因为我应该可以在整个应用程序中使用{StaticResource MyBackground}而不是“White”,然后通过更改资源定义来重新定义整个应用程序的外观。
问题是,如果您在子控件中引用了全局资源,则Expression Blend将无效。有没有其他方式来主题你的应用程序?我不愿意失去Blend设计器支持,或者在每个控件中复制一段代码/ xaml。我发现令人震惊的是他们没有修复这么大的错误。
有什么想法吗?
干杯
答案 0 :(得分:1)
所以我没有试过这个,但听起来它会起作用。此外,信息有点过时。如果能解决问题,请告诉我。 :)
从the Blend blog,将以下两个块添加到项目文件中:
<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生成生产代码而不是单击构建编译按钮。
答案 1 :(得分:0)
如果您使用DynamicResources,似乎此错误消失了。
在b)中解释:http://blogs.msdn.com/b/unnir/archive/2009/03/31/blend-wpf-and-resource-references.aspx
有人在早期的SO问题中发布了关于同一个bug的链接,但由于某种原因它没有得到赞成,并且在其他答案之下丢失了。