2015-10-20 1 views
1

У меня действительно странная ситуация, и я немного потерял, чтобы быть честным. У меня есть приложение WPF, которое запускается из приложения Windows Form. Для этого я создаю MainWindow.xaml из моего кода WinForms. Это означает, что мой App.xaml никогда не попадает.Вызов таблицы стилей из страницы WPF

Я пробовал все различные методы использования таблицы стилей в своем приложении Application.xaml, но поскольку это не выполняется, я думаю, мне нужно вызвать мою таблицу стилей с каждой страницы (аналогично веб-сайту).

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="TextStyle.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

Это код, который я вижу так много в Интернете и достаточно справедливо, если я называю это из моего App.xaml он будет работать в конструкторе, но потому, что во время выполнения не его не ударил так что это не будет работать.

Я попытался даже инстанцированием файла App.xaml из моего приложения WPF, но я не уверен, если я испортил его или он просто не работает, но это не понравилось

Есть ли что-то аналогично тому, что можно вызвать на страницах WPF или Windows?

Извините, я новичок в WPF и может работать с основами, но я стучал головой о стену на этом один

Спасибо за любую помощь.

+1

Возникает ли проблема, если вы используете полный пакет URI для источника, то есть ''? Замените «MyApplication» на имя вашей сборки, сохраните '; component' и замените« Resources »на имя вашего каталога. – Heinzi

+1

В качестве альтернативы, если приложение Windows Forms находится в другом каталоге, это может быть проблема с преобразователем сборки: http://stackoverflow.com/a/20495980/87698 – Heinzi

ответ

0

App.xaml не запускается при размещении компонентов WPF на WinForm. Посмотрите на http://drwpf.com/blog/2007/10/05/managing-application-resources-when-wpf-is-hosted/ на несколько способов управления ресурсами в размещенных приложениях WPF.

В вашем случае я думаю, что проблема с тем, как вы установите в атрибуте Source, попробуйте использовать пакет URL, например,

<Page.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/theNameOfTheResourceAssembly;component/resourceName.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
</Page.Resources> 

ресурс также должен быть отформатирован как таковой:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        x:Class="theNameOfTheResourceAssembly.resourceName"> 
    ...resource contents 
</ResourceDictionary> 
Смежные вопросы