2017-01-30 4 views
0

現在、スレッドで印刷を実装しています。これまでのところ、(ほとんど)問題はありません。
xamlの解析例外を使ってしばらく立ち往生しましたが、印刷したいビューにResourceDictionariesを追加して修正しました。このビューは、明らかに、テストプロジェクトのapp.xamlで定義されたResourceDictionariesをInitializeComponent呼び出しでロードしようとしていました。
私たちは実行時に変更できるテーマを使用しています。彼らはまた、いくつかのグローバルスタイルを持っています。の質問に今UserControlがResourceDictionariesを読み込まないようにします。

...は、私がapp.xamlInitializeComponent内の他の場所から定義ResourceDictionariesを読み込むからUserControlを防ぐことができる方法はありますか?

基本的に、アプリケーションのすべてのビューで現在のテーマがスタイルで使用されており、印刷用のUserControlはスタイルを使用せず、ResourceDictionaryはまったく使用しないでください。

+2

方法辞書の仕事はそれがあなたのコントロールが値であることを、正しいキーを持つ辞書を持っている場合、彼らは ので、ビジュアルツリーをダウンカスケードということです返されなければ、それは親と親の親を尋ねる、そしてそれがApp に当たるまであなたにそれがアプリケーションからのロードを防ぐことはできないが、Appのリソースをローカルにオーバーライドできる – MikeT

答えて

0

私は、デフォルトですべての使用されたコントロールスタイルをオーバーライドする新しいテーマを作成することで問題を "解決"しました。 UserControlリソースにこのResourceDictionaryのみを含めると、WPFデフォルトスタイルが使用されます。 ResourceDictionary

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/MyAssembly;component/Themes/Theme.Nothing.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

数行:

<Style TargetType="{x:Type Slider}"/> 
<Style TargetType="{x:Type TabControl}"/> 
<Style TargetType="{x:Type TabItem}"/> 
<Style TargetType="{x:Type TextBlock}"/> 
<Style TargetType="{x:Type TextBox}"/> 
<Style TargetType="{x:Type ToolTip}"/> 
関連する問題