使用没有Blend呕吐的资源进行主题化

时间:2012-04-03 19:55:25

标签: wpf expression-blend blend

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

问题是,如果您在子控件中引用了全局资源,则Expression Blend将无效。有没有其他方式来主题你的应用程序?我不愿意失去Blend设计器支持,或者在每个控件中复制一段代码/ xaml。我发现令人震惊的是他们没有修复这么大的错误。

有什么想法吗?

干杯

2 个答案:

答案 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的链接,但由于某种原因它没有得到赞成,并且在其他答案之下丢失了。