2014-11-16 2 views
1

У меня есть один проект Winforms и несколько проектов WPF в одном решении. Из приложения Winform я хотел бы открыть одну из Windows WPF (это - MetroWindow от Mahapps, если это имеет значение).XamlParseException при попытке открыть окно WPF из Winforms

После просмотра принятого ответа на this stackoverflow question я закончил с этим кусок кода:

OpenWPFAppButton_Click(object sender, EventArgs e) 
{ 
    WPFApp wpfApp = new WPFApp(); 
    ElementHost.EnableModelessKeyboardInterop(wpfApp); 
    wpfApp.Show(); 
} 

К сожалению, если я нажму кнопку, когда происходит XamlParseException, что указывает на первой линии в Style="{StaticResource ... }" WPFApp.xaml (Основной файл Xaml).

enter image description here

Означает ли это, я не могу открыть WPF для Windows из Winforms, которые включает в себя статические ресурсы? Или я пропустил что-то простое здесь?

EDIT: Вот содержимое файла App.xaml:

<Application x:Class="WPFAppProjectName.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:system="clr-namespace:System;assembly=mscorlib" 
     StartupUri="WPFApp.xaml"> 
<Application.Resources> 
    <ResourceDictionary> 

     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/ButtonStyles.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/MenuStyles.xaml"/> 
      <ResourceDictionary Source="pack://application:,,,/Selen.Wpf.SystemStyles;component/TextBoxStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 

    </ResourceDictionary> 
</Application.Resources> 

ответ

1

Это наиболее вероятно, что некоторые общие ресурсы определены в App.xaml. Этот файл не загружается при работе с Windows Forms, и поэтому эти ресурсы недоступны. Следовательно, вы получаете эту ошибку.

Вы можете включить определения ресурсов в файлы Window.xaml или собственный файл ресурсов стиля (aka Resource Dictionary), который включен в каждое окно.

+0

Спасибо за помощь! Я добавил код App.xaml к моему вопросу. Там вы можете увидеть ссылки на некоторые пакеты ресурсов. Не могли бы вы рассказать мне, как включить их непосредственно в мой файл Window.xaml? Возможно ли это? – betaFlux

+0

Несомненно. Скопируйте весь код между «Application.Resources» и скопируйте его в «окно». Переименуйте 'Приложение' в' Window'. –

+0

Когда я копирую код между 'Application.Resources', нет' Application' для переименования или вы имеете в виду все, включая теги 'Application.Resources'? – betaFlux

Смежные вопросы