WPF привязка и указатели - PullRequest
1 голос
/ 01 июня 2010

У меня есть приложение WPF, которое содержит несколько Window с несколькими UserControl с и Coordinator объектом. Окно и все его пользовательские элементы управления указывают на объект, экземпляр которого находится в Координаторе, посредством своего DataContext.

Проблема в том, что я хочу изменить этот объект (например, создать новый объект ()) в Координаторе, но я хочу, чтобы все DataContext s указывали на новый объект.
Я пытался отправить объект по ссылке в конструктор окон, но это не помогло.

Есть идеи, как переписать область памяти, на которую указывают все указатели?
(Я не хочу заменять свойства в объекте, так как это большая работа, и не нужно использовать средний объект, который указывает на замененный объект)

Ответы [ 2 ]

1 голос
/ 01 июня 2010

Я пытался отправить объект по ссылке конструктор окна, но это не так Помогите. Любая идея о том, как я могу переписать место в памяти, что все указатели указывают на?

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

У вас есть два решения для этого:

  • заставит вашего координатора реализовать INotifyPropertyChanged и повысить NotifyPropertyChanged при изменении ссылки на объект,

  • сделать ваш объект доступным через DependencyProperty и использовать оболочку свойств. При изменении DependencyProperty автоматически уведомляет своих наблюдателей.

0 голосов
/ 01 июня 2010

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

ClearValue(DataContextProperty);

DataContext = NewlyCreatedObject;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...