Я новичок в stackoverflow и относительно новый в WPF.
Я обернул голову вокруг полудюжины томов «Образцы и лучшие практики» (а также многочисленные посты здесь), но, похоже, не могу найти решение, которое ищу.
Моя проблема: WPF / .Net 4 / C #
У меня есть текстовый процессор (типа Editor E ), который может загружать один документ (типа Document D ) за один раз (обозначается как Editor.CurrentDocument ) , Несколько элементов управления пользовательского интерфейса связываются со свойствами Document (все свойства зависимостей), такими как Document.Title , Document.DateLastModification .
Теперь я хочу иметь возможность переключать реальный экземпляр Document без необходимости отсоединять и перехватывать все обработчики событий. Поэтому я предполагаю, что свойство Editor.CurrentDocument должно каким-то образом оставаться его экземпляром при переключении реализации.
Я попытался создать класс SingleInstanceDocument , который наследуется непосредственно от Document и использует шаблон Singleton. Но тогда я не могу найти способ вставить какой-либо экземпляр Document в SingleInstanceDocument без необходимости повторного сопоставления всех свойств.
Я как-то заблуждаюсь или здесь упускаю смысл? Если подход SingleInstanceDocument является жизнеспособным решением, могу ли я использовать отражение, чтобы автоматически переназначить все доступные свойства зависимостей из внутреннего документа во внешнюю оболочку SingleInstanceDocument?
Большое спасибо!
Добавление
Оказалось, что требуемая здесь функциональность уже была предоставлена WPF / .NET из коробки путем реализации INotifyPropertyChanged на хост-объекте CurrentDocument. Таким образом, изменение текущего документа привело к тому, что пользовательский интерфейс соответствующим образом обновил свои связанные элементы управления. Я прошу прощения за все замешательство.