2017-01-30 13 views
0

В настоящее время я реализую печать с поточной обработкой. Пока нет (почти) проблем.
Я был застрял с исключениями для xaml parse, хотя исправил его, добавив ResourceDictionaries в представление, которое я хочу напечатать. Представление, по-видимому, должно было попытаться загрузить ResourceDictionaries, определенные в тестовом проекте app.xaml в его вызове InitializeComponent.
Мы используем темы, которые можно изменить во время выполнения. У них также есть некоторые глобальные стили.Предотвращение загрузки UserControl ResourceDictionaries

Теперь к вопросу ... есть способ, которым я могу предотвратить UserControl от загрузки ResourceDictionaries, определенный в app.xaml или из любого другого места в InitializeComponent?

В принципе, все представления в приложении используют текущую тему со стилями, а для печати не должно быть никакого стиля и ResourceDictionary.

+2

Работа путь словарей является то, что они каскадом вниз визуальное дерево так, если элемент управления имеет словарь с правильным ключом, что значение является возвращается, если нет, тогда он запрашивает родителя, а затем родителя родителей и т. д., пока он не попадет в приложение , поэтому вы не можете предотвратить его загрузку из приложения, но вы можете локально переопределить ресурсы приложения – MikeT

ответ

0

Я «решил» проблему, создав новую тему, которая по умолчанию отменяет все используемые стили управления. Только с учетом этого ResourceDictionary в ресурсах UserControl будут использоваться стили по умолчанию WPF.

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

Через несколько строк ResourceDictionary:

<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}"/>