0

我有一个项目实现了类似于在这个问题中找到的中介模式: Sql、Wpf、Xaml、C#、绑定数据、动态资源、访问非静态数据、获取对对象的引用

当在父视图中调用 Register() 函数然后在子视图中调用 SendMessage() 函数时,这似乎工作正常。可以很容易地获得在子节点中获取的数据,然后父节点可以通过 Mediator 对其进行处理。

但是我需要做相反的事情。获取在父节点中获取的数据并将其传递给子节点进行处理。调解器可以用于此任务吗?

我已经尝试了各种方法,在父级中使用 SendMessage() 在子级中调用 Register() 函数,但是由于 Register() 初始化了集合,因此记录似乎丢失了。

我错过了什么吗?有没有更好的办法?

4

1 回答 1

0

我有同样的问题......我知道这不是一个好的解决方案,但我这样解决了......

在您的 ChildView 中

    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);
    }

在这里,当 ChildViewModel 找到所需的数据时,我们调用 parentViewModel 发送所需的数据....

于 2012-01-13T19:46:21.810 回答