Внешний ResourceDictionary в нескольких проектах - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь включить свой словарь ресурсов (xamarin) в несколько приложений для Android, потому что каждое приложение должно иметь один и тот же фон, метки ... вы знаете, что я имею в виду. : D

Что я пробовал?

  • Я проверял, работают ли мой стиль и приложение в одном проекте. Я создал внешнюю стандартную библиотеку .net для ее централизации.

    <?xml version="1.0" encoding="utf-8" ?>
    <ResourceDictionary
       xmlns="http://xamarin.com/schemas/2014/forms"
       xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

        <Color x:Key="PrimaryText">#FAFAFA</Color>
        <Color x:Key="SecondaryText">#F5F5F5</Color>
        <Color x:Key="HintText">#80FFFFFF</Color>

  • Я добавил ссылку (Styles.dll) в свое приложение
  • Когда яхочу добавить свой стиль (например) к моим меткам, которые я использую "StaticResource" и "DynamicResource". Когда я использую StaticResource и запускаю программу, она выдает « Xamarin.Forms.Xaml.XamlParseException:« Позиция 40:20. StaticResource не найден для ключа ErrorTextColor '». Когда я использую DynamicResource, приложение запускается, но оно не принимает стиль.
  • В app.xaml я добавил пространство имен и сборку

    <?xml version="1.0" encoding="utf-8" ?>
    <prism:PrismApplication xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:theme="clr-namespace:Styles;assembly=Styles"
                 xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"

        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                  <theme:BlackStyleDictionary/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </prism:PrismApplication>

  • ПослеЯ много гуглил и обнаружил, что на самом деле могу использовать «mergedDictionary», чтобы включить его в свой проект, но это не работает - также «ResourceDictionary Source =» ... Path »не работает для меня.

    <Application.Resources>        
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
              <theme:BlackStyleDictionary/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

  • Я потратил много времени на Google, но не нашел ответа, поэтому мне нужно, чтобы вы решили его. :) 1029 *

Что работает?

Как я уже упоминал выше, когда у меня был свой style.xaml в моем текущем приложении, все работает нормально, поэтому с ресурсным направлением проблем нет.


Если вам нужна дополнительная информациядля решения не стесняйтесь просить его. :)

Заранее большое спасибо,

JaqSparrow

1 Ответ

0 голосов
/ 12 ноября 2019

Проблема заключалась в том, что метод InitializeComponent не вызывался в ResourceDictionaries, который, в свою очередь, никогда не загружал их в словарь ресурсов и вызывал проблемы.

Добавление InitializeComponent в конструктор решило проблему.

Например:

public MyResources()
{
  InitializeComponent();
}
...