您好我在Viewmodel中有3个自定义类型的ObservableCollections称之为ViewmodelA,我需要将这些集合发送到ViewmodelB。我尝试使用MessengerInstance注册一个返回3个ObservableCollections列表的方法,但它抱怨它期望返回类型为void。
记住mvvm模式,将这些colllections转移到ViewModelB的最佳方法是什么?
顺便说一句,我使用的是mvvm-light
这是我返回列表的方法:
private List<ObservableCollection<Column>> RetrieveFilters(Column col)
{
List<ObservableCollection<Column>> Out = new List<ObservableCollection<Column>>
{
_manuColumns,
_pnColumns,
_nounModColumns
};
return Out;
}
然后我尝试用
注册方法 MessengerInstance.Register<Column>(this, RetrieveFilters);
我得到的错误是
List<ObservableCollection<Column>> PropertyViewModel.RetrieveFilters(Column)
有错误的返回类型
答案 0 :(得分:2)
你的信使方法很好,如果你使用mvvm灯,你应该像这样实现
class MyMessage
{
ObservableCollections col1 {get;set;}
ObservableCollections col2 {get;set;}
ObservableCollections col3 {get;set;}
public MyMessage(ObservableCollections col1, ObservableCollections col2, ObservableCollections col3)
{
this.Col1 = col1;
this.Col2 = col2;
this.Col3 = col3;
}
}
class viewmodelA
{
void someFunc()
{
Messenger.Default.Send(new MyMessage (collection1, collection2, collection3);
}
}
class viewmodelB
{
viewmodelB()
{
Messenger.Default.Register<MyMessage > (this, message => DoSomething(message);
}
public void DoSomething(MyMessage message)
{
//use your collections
}
}