編集:私はこれを非常に簡素化されたバージョンのアプリケーションで再現することができました。.zipファイルへのリンクは次のとおりです
http://www.mediafire.com/?cn918gi15uph1xe
モジュールに2つの異なる領域にビューを追加させます-上部にあるステータスバー領域は問題が発生する場所です。奇妙な部分は、同じビュータイプがメイン領域に追加された場合、問題がないことです。ステータスバー領域はItemsControlであり、メイン領域はContentPresenterです。それが唯一の違いです。
何か洞察があれば教えてください!ありがとう。
-----元の投稿-----
こんにちは皆さん、
WPFで奇妙な動作が見られます。.NET4とPRISMv4を使用しています。アプリケーションを構造化する方法は、スキンリソースディクショナリが独自のアセンブリに存在することです。モジュールはこのアセンブリを参照しません。代わりに、必要なスキンを構成ファイルから読み取り、適切なコンポーネントをマージされたディクショナリにロードするスキンマネージャークラスがあります。マージされたディクショナリは、アプリケーションリソースに設定されます(追加する前に、Application.Resources.MergedDictionariesをクリアします)。アイデアは、必要に応じて後で実行時にスキンを切り替えることができ、モジュールは実行時までスキンについて知る必要がないということです。
次に、xamlで、DynamicResourceを使用してスタイルを参照しています。問題は、スキンで定義され、キーによって参照されるTextBlockスタイルに関係しています。
<TextBlock Style="{DynamicResource someKey}" ... />
スタイルは、フォントファミリ、フォントサイズ、および前景を定義します。フォントファミリーとサイズが正しく適用されています(これを確認しました)。ただし、前景は常に黒です。SnoopとWPFInspectorを使用して、前景の値がスタイルから取得されるのではなく、「継承」されていることを確認しました。
また、TextBlockから継承するコントロールがあり、テキスト値を決定するいくつかのプロパティを追加するだけです(スタイルにはまったく影響しません)。Foregroundプロパティのプロパティ変更オーバーライドを追加することができ、スタイルの前景値が適用され、その後、継承された値が適用されることがわかりました。.NETソースのデバッグを機能させることができなかったため、2回目から呼び出された理由/場所がわかりませんでした...
これは、まったく同じ問題を抱えている男性からの古い古い投稿へのリンクです。彼は答えを見つけられませんでしたが、代わりに回避策を見つけました。残念ながら、回避策は継承されたコントロールでのみ機能します(TextBlocksにInheritanceBehaviorを設定することはできません)。
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3501ed19-ab40-4064-81b5-e9b7b9d35b56