Я сейчас работаю на основе стиля в XAML, который включает в себя шаблон для моего стандарта HandledWindow
. Этот стиль включает в себя несколько локальных ресурсов, таких как цвета, шрифты и другие переменные, которые будут использоваться позже в моем стиле.Каков правильный способ создания настроек пользовательского интерфейса в WPF?
Я думал о настройках пользовательского интерфейса для пользователя, поэтому он может изменять такие вещи, как цвета и размеры по своему усмотрению. Но тогда я обнаружил, что изменение локального ресурса не изменит сам стиль, а только для текущего экземпляра HandledWindow
. Поэтому он не подходит для настроек пользовательского интерфейса, поскольку в приложении может быть больше, чем запущено окно.
Тогда я понял, что мне нужно привязать переменные относительно шаблона моего класса HandledWindow
, который будет включать в себя все изменяемые настройки как общедоступные статические свойства &. Но потом я столкнулся с проблемой статической привязки свойств, поскольку я не могу поднять событие PropertyChanged
, которое работает только для экземпляра. И окно не будет обновлять его стиль самостоятельно.
Кроме того, я стараюсь, чтобы стиль реагировал и обновлялся сразу на лету без перезапуска.
Опубликуйте соответствующий код и XAML. BTW WPF имеет [встроенную поддержку тем] (http://stackoverflow.com/a/11139598/643085), которая совершенно отсутствует в winforms динозавров, поэтому вы были вынуждены разного рода ужасные хаки в winforms, тогда как в WPF все красиво и счастливо. –
Трюк темы выполняется путем замены ресурсов текущего экземпляра «HandledWindow», я тоже думал об этом. Но мне нужно что-то, что изменит тему для других окон в тот же момент, как привязка данных, даже не загружая любые страницы XAML только с помощью кода C#, установка нового значения для свойства и визуальный интерфейс должны быть обновлены в тот же момент. Я отправлю свой код за несколько минут. Обратите внимание, что эти статические общедоступные свойства также должны редактироваться с помощью интерфейса. Это означает, что для его установки из пользовательского интерфейса должна быть другая привязка данных. – Lispwave
Нет. Если вы хотите, чтобы темы, связанные с приложением, загружали ваши ресурсные словари в 'System.Windows.Application.Current.Resources'. –