Автозаполнение с ResourceDictionary в App.xaml - PullRequest
0 голосов
/ 19 февраля 2019

Вот моя текущая архитектура проекта:

Program.Startup.csproj
--- Styles
------ MyStyles.xaml
--- App.xaml

Program.View.csproj
--- MainWindow.xaml
--- SettingsView.xaml
--- ...

Я использую свой app.xaml для загрузки в своих стилях всех своих элементов управления:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="Styles/MyStyles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Всякий раз, когда я использую стильв моем главном окне его нельзя найти во время разработки.Есть ли способ заставить работать автозаполнение и остановить 1000 «не найденных ошибок» при разработке вида / окна?

1 Ответ

0 голосов
/ 19 февраля 2019

Окно - это управление контентом.

Поэтому вы можете отключить его содержимое, если хотите.

Не имеет особого смысла иметь ваше главное окно в проекте, совершенно отличном от точки входа.

Если вы хотите, чтобы foo в нем, вы можете создать новый экземпляр foo и сделать MainWindow.Content = myFoo.

Вместо этого хотите бар .... вы можете установить его содержимое на экземпляр бара.

В любом случае, каким бы ни было ваше основное решение, могут быть добавлены другие проекты.

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

Иследовательно, ваши представления будут.

Затем в app.xaml вы можете объединить словари ресурсов из решения точки входа и использовать нотацию пакетов для объединения словарей ресурсов из других проектов.

Вот копияlive app.xaml делает это.

<Application x:Class="ScenarioEditor.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup"
         >
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/Geometries.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/ControlTemplates.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/FontResources.xaml"/>
            <ResourceDictionary  Source="/Resources/ScenarioEditorResources.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/UILibResources.xaml"/>
            <ResourceDictionary  Source="pack://application:,,,/UILib;component/Resources/HypsoColoursRD.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Мое решение - редактор сценариев, а ScenarioEditorResources заключается в том, что есть несколько других проектов, на которые ссылаются, и их ресурсная дикцияОвен также слился.Я работаю, открывая решение редактора сценариев в Visual Studio.

Когда я редактирую материал, который находится в одном из этих проектов, на который ссылаются, UILib, тогда все ресурсы объединяются хорошо.

Вы можете альтернативно добавитьсловарь ресурсов дизайна, но похоже, что он будет загружен из EXE в DLL.

Не обычный способ работы.

...