3

WPFは、アプリ全体で「ホワイト」の代わりに{StaticResource MyBackground}を使用できるはずであり、リソース定義を変更することで、アプリケーション全体の外観を再定義できるという点で優れています。

問題は、サブコントロールにグローバルリソースへの参照がある場合、ExpressionBlendが機能しないことです。アプリにテーマを設定する他の方法はありますか?Blendデザイナーのサポートを失ったり、すべてのコントロールでコード/xamlの一部を複製したりするつもりはありません。彼らがこの規模のバグを修正していないのは驚くべきことです。

何か案は?

乾杯

4

2 に答える 2

1

だから私はこれを試していませんが、うまくいくようです。また、情報は少し古くなっています。問題が解決するかどうか教えてください。:)

Blendブログから、次の2つのチャンクをプロジェクトファイルに追加します。

<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 に答える