System.Windows.Markup.XamlParseException в многопроектном решении (смешанные платформы) - PullRequest
0 голосов
/ 21 ноября 2018

Я интегрировал свой проект WPF в смешанное решение.Это решение имеет 3 проекта, написанных на WinForms (.cs), 1 на WinForms (.vb) и мой, написанный на WPF (с использованием MahApps).Владелец моего проекта / windows должен быть одним из трех, написанных в WinForm.

Я сделал такой вызов:

using WPFSolution;
using System.Windows.Forms.Integration;

private void buttonOpenWPFUi_Click(object sender, EventArgs e)
    {
        var pm = new ProductsMenu();
        ElementHost.EnableModelessKeyboardInterop(pm);
        pm.Show();
    }

ProductsMenu - моя отправная точкав App.xaml

Но когда я достигаю InitializeComponents() из ProductsMenu.xaml.cs System.Windows.Markup.XamlParseException были брошены

Ошибка: IOException: не удается найти ресурс 'resources / icons.xaml'.

Мой файл App.xaml:

<Application x:Class="WPFSolution.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="ProductsMenu.xaml" ShutdownMode="OnMainWindowClose">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" />
            <!-- Accent and AppTheme setting -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Red.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
            <!-- BaseDark.xaml | BaseLight.xaml -->
            <!-- Icons -->
            <ResourceDictionary Source="pack://application:,,,/WPFSolution;component/Resources/Icons.xaml"></ResourceDictionary>

            <!-- Languages -->
            <!--<ResourceDictionary Source="Resources/StringResources.en.xaml"></ResourceDictionary>-->
            <ResourceDictionary Source="Resources/StringResources.it.xaml"></ResourceDictionary>

        </ResourceDictionary.MergedDictionaries>

        <Style TargetType="{x:Type ToolTip}">
            <Setter Property="Background" Value="White"/>
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="BorderThickness" Value="2"/>
            <Setter Property="FontSize" Value="18"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="Padding" Value="7,4,7,4"/>
        </Style>


        <!--IMMAGINI -->
        <!--nodi-->
        <!--<BitmapImage x:Key="Nodo1" UriSource="Resources/img/TileImages/nodi/nodo1.jpg"></BitmapImage>
        <BitmapImage x:Key="Nodo2" UriSource="Resources/img/TileImages/nodi/nodo2.jpg"></BitmapImage>
        <BitmapImage x:Key="Nodo3" UriSource="Resources/img/TileImages/nodi/nodo3.jpg"></BitmapImage>
        <BitmapImage x:Key="Nodo4" UriSource="Resources/img/TileImages/nodi/nodo4.jpg"></BitmapImage>-->


    </ResourceDictionary>
</Application.Resources>

Я пыталсяустановить Icons.xaml / Build Action как ресурс, а также как страницу.Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

попробуйте этот синтаксис:

<ResourceDictionary Source="/WPFSolution;component/Resources/Icons.xaml" />

, а также «Страница» является правильным вариантом сборки в этом случае

0 голосов
/ 21 ноября 2018

Понял (или обходной путь, по крайней мере).

  1. Я разыменовал проект WPFSolution.
  2. Скомпилировал решение WPF как .dll (я скопировал все объединенные словари в каждый файл window.xaml, удалил файл app.xaml и изменил тип приложения на библиотеку классов)
  3. СкопированоWPFSolution.dll в bin / release - bin / debug основного проекта
  4. Ссылка на .dll

Все работает как шарм

...