Хм ... с чего начать?Вот несколько вещей, которые я заметил:
- Если вы используете свойство зависимостей, нет необходимости вызывать
OnPropertyChanged
из установщика свойства Date
. - Свойство зависимостей объявляет тип как
DateTime
, но ваше открытое свойство имеет тип object
, что требует от вас его приведения в другое место. - Если
Calendar_Loaded
вызывается в большем количестве ситуаций, чем вВ ответ на событие Loaded
(например, событие GotFocus
, я бы порекомендовал вам вызвать его как-нибудь еще или создать метод с соответствующим именем (например, UpdateDateParts) и вызвать его из правильно названных отдельных обработчиков событий. - Использование фиксированных форматных спецификаторов, когда обработка строк даты плохо локализуется.
В дополнение к этому, я бы предложил, чтобы вы могли реализовать пользовательский интерфейс способом, который поддерживает привязку данных(и повторный шаблон), используя привязки и выставляя части даты свойства зависимости Date
вместо того, чтобы вручную обновлять свойство Text
некоторого текстаблоки / ящики в обработчиках событий.Фактически, если вы наследуете Control
вместо UserControl
, вы можете создать и задействовать элемент управления без внешнего вида, пользовательский интерфейс которого определяется стилем в themes \ generic.xaml, который может быть переопределен пользователями вашего элемента управления.
Что касается того, почему дата неверна в разных экземплярах вашего календарного элемента управления, нам нужно было бы увидеть некоторые из ваших XAML / кодов, чтобы увидеть, как этот элемент управления используется и инициализируется, чтобы иметь возможность обеспечить лучшееответ.Однако я подумал, что вышесказанное стоит добавить в ответ, вместо того, чтобы пытаться сказать это в комментарии.