2010-06-01 62 views
0

我有一个WPF应用程序,其中包含一些Window s和几个UserControl s和一个Coordinator对象。该窗口及其所有用户控件通过其DataContext指向一个对象,该对象位于协调器中。WPF绑定和指针

问题是我想在协调器中更改此对象(例如创建新对象()),但我希望所有DataContext都指向新对象。
我试图通过引用窗口构造函数发送对象,但它没有帮助。

有关如何重写所有指针指向的内存位置的任何想法?
(我不想替换对象中的属性,因为它很多工作,也不使用指向替换对象的中间对象)

回答

1

我试图通过裁判发送对象 窗口构造函数,但它没有 帮助。任何想法如何重写 所有指针 指向的内存位置?

这很正常,因为即使您更改引用指向的对象,您的用户控件也无法知道事情已经发生变化:您必须通知他们。

你有两个解决方案,这样做:

  • 让您的协调落实INotifyPropertyChanged的,提高NotifyPropertyChanged当对象引用的变化,

  • 使可用你的对象通过的DependencyProperty并使用属性包装器。 当更改时,DependencyProperty将自动通知其观察员。

0

除非我遗漏了某些东西,否则您在应用程序中使用了datacontext当你创建一个新的对象时,你不能将datacontext设置为新的对象,它将被绑定到你的所有用户控件。

ClearValue(DataContextProperty); 

DataContext = NewlyCreatedObject; 
+0

我简化我的问题,以实际说明这个问题,我有很多不同datacontexts窗口的每一个与上面的描述,因此我想改变从协调员的所有对象,并避免改变窗口属性, – Eran 2010-06-01 07:29:00