我有一个项目实现类似于此问题中的Mediator模式: Sql, Wpf, Xaml, C#, Binding data, Dynamic resource, accessing to non-static data, Obtaining a Reference to an Object
当在父视图中调用Register()函数,然后在子视图中调用SendMessage()函数时,这似乎工作正常。可以很容易地获得在孩子中获得的数据,然后父母可以通过Mediator处理它。
但是我需要做相反的事情。获取父项中获取的数据并将其传递给要处理的子项。调解员可以用于此任务吗?
我已经尝试了各种方法在子节点中使用SendMessage()在子节点中调用Register()函数,但由于Register()初始化集合,因此记录似乎丢失了。
我错过了什么吗?还有更好的方法吗?
答案 0 :(得分:0)
我遇到了同样的问题...我知道它不是一个好的解决方案,但我解决了这个问题......
public ChildViewModel()
{
Messenger.UnRegister(this); //I use reflection and Attributes to register/Unregister you can do it normally
Messenger.Register(this);
if (ChildData== null)
{
Messenger.NotifyColleagues<object>(
MessengerMessages.GET_CHILD_DATA,ChildData);
}
}
[MessengerMessageSink(MessengerMessages.SEND_CHID_DATA,
ParameterType = typeof (CHILD_DATA))]
protected void Set_Child_DATA(ChildData childData)
{
if (childData!= null)
{
//Do Something
}
}
public ParentViewModel()
{
Messenger.UnRegister(this); //I use reflection and Attributes to register/Unregister you can do it normally
Messenger.Register(this);
}
[MessengerMessageSink(MessengerMessages.GET_CHILD_DATA,
ParameterType = typeof (CHILD_DATA))]
protected void Send_Child_DATA(Object obj)
{
Messenger.NotifyColleagues<object>(
MessengerMessages.SEND_CHILD_DATA,ChildData);
}
这里我们调用parentViewModel在ChildViewModel dosent找到它需要的数据时发送所需的数据....