Свойства WPF и x: Null и т. Д. - PullRequest
       40

Свойства WPF и x: Null и т. Д.

0 голосов
/ 11 августа 2011

Я использую WPF в качестве примера.Предположим, что у нас есть контроллер X, и мы устанавливаем его фон для изображения.Затем мы хотим, чтобы при наведении мыши не было фонового изображения.Это может быть достигнуто с помощью x: Null.Однако, если мы не указываем x: Null, он сохраняет то же изображение.

Я пытаюсь создать собственный движок скина для платформы, которая не поддерживает WPF.Я пытаюсь выяснить, как воспроизвести это поведение.Проблема в том, что если у меня есть класс XControlStyle и два экземпляра этого класса, один для нормального состояния и один для наведения мыши, то не очевидно, как добиться того, что я сделал в wpf ..

Поскольку настройка, например,mouseover.Backgroundimage = null не может сказать, установил ли пользователь значение null или значение по умолчанию равно null. Эта проблема хуже с типами значений. Установка всех свойств дважды не является элегантным решением. Также мне нужно решение, чтобысделать BackgroundImage, как будто он никогда не был установлен. Я выяснил 3 решения (по свойствам, словарному классу для хранения, оборачиванию значений свойств в оболочке класса), но, хотя я реализовал последнее, я не удовлетворен.я думаю, что они хранят эти данные как метаданные как-то?Поэтому мне интересно, является ли метаданные каким-то образом решением моей проблемы? Любая идея?

1 Ответ

0 голосов
/ 11 августа 2011

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

...