Добавление объединенного словаря в объединенный словарь

Кажется, я не могу добавить объединенный словарь в коллекцию объединенных словарей в XAML.

Theme.xaml

    

Ресурсы приложений

     <!--   -->    

Примечание: если я поместил оба ResourceDictionaries в Appication.Resources MergedDictionary (закомментируйте тему.xaml и раскомментируйте два других словаря), они оба загрузится правильно. Однако, как определяются наши ресурсы, это может означать, что будет загружено немало ресурсов, а для динамической загрузки я хотел бы иметь возможность определять шаблоны.

Это ошибка оптимизации, см. Эту ссылку

При создании каждого объекта в XAML, если присутствует стиль по умолчанию (т.е. стиль с ключом типа), этот стиль должен применяться. Как вы можете себе представить, есть несколько оптимизаций производительности, чтобы сделать (подразумеваемый) поиск легкого веса, насколько это возможно. Один из них заключается в том, что мы не заглядываем в Словари ресурсов, если они не помечены как «содержащие стили по умолчанию». Есть ошибка: если все ваши стили по умолчанию вложены в объединенные словари на три уровня (или глубже), верхний словарь не получает помечены, поэтому поиск пропускает его. Работа вокруг заключается в том, чтобы поместить стиль по умолчанию в что-то, что угодно, в корневой словарь.

Поэтому добавление фиктивного стиля в корневой словарь исправляет это. пример

          

Ваш образец кода имеет знак двойного равенства в источнике словаря объединенного ресурса App.xaml для Palette.Blue.xaml. Я предполагаю, что это опечатка для вашего примера, размещенная здесь, а не ваша настоящая проблема.

Трудно понять, как связать все ресурсы непосредственно в XAML. Самый простой способ сделать это – на панели «Ресурсы» в Blend. Я создал приложение Silverlight с файлами ресурсов, названными как ваш пример, затем открыл проект в Blend и очень быстро связал их.

App.xaml

           

Theme.xaml

       

Template.xaml

     

Palette.Blue.xaml

    

MainPage.xaml

        

Конечно, если вы связываете ресурсы с разных сборок, это будет выглядеть по-другому. На самом деле, в этом случае, я бы предложил изучить слияние ваших словарей в коде позади.

Если это происходит на одном из ваших собственных элементов управления, я обнаружил, что другое решение устанавливает для свойства DefaultStyleKey значение null:

 DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(null)); 

Я понятия не имею, почему это работает, но это кажется!

  • Новая строка в атрибуте string
  • Как упаковать библиотеку .NET, ориентированную на универсальную платформу Windows?
  • DataContext UserControl
  • Потяните за обновлениями на Windows Phone
  • Ошибка WPF 40 Ошибка BindingExpression path: свойство не найдено в 'объекте'
  • Как WPF UserControl наследует WPC UserControl?
  • Что делает звезда WPF (Width = "100 *")
  • Имеет ли XAML условную директиву компилятора для режима отладки?
  • DataTrigger, где значение НЕ равно нулю?
  • События WPF в ResourceDictionary для ControlTemplate
  • Как прокручивать в нижней части ScrollViewer автоматически с помощью Xaml и привязки?
  • Interesting Posts

    Любые быстрые и грязные методы сглаживания для повернутого UIImageView?

    async / await – когда нужно вернуть задачу void void?

    Firebase: запрос для исключения данных на основе условия

    Как предотвратить Windows Explorer от медленного чтения содержимого файла для создания метаданных?

    Сравнение строк сходства в Java

    Как я могу использовать китайский IME с макетом Dvorak?

    Не удалось выполнить аутентификацию службы ASP.NET Web Api с помощью HttpClient

    Получить список отмеченных флажков в div с помощью jQuery

    Как установить выбранную опцию выпадающего списка с использованием углового JS

    Java, найти пересечение двух массивов

    Создание специальных команд для Notepad ++ с помощью NppExec

    Как применить несколько предикатов к java.util.Stream?

    Круглое двойное значение до 2 знаков после запятой

    В программе Fortran OpenMP отсутствует ускорение CPU_TIME ()

    Как я могу заменить каждое вхождение String в файл с помощью PowerShell?

    Давайте будем гением компьютера.