如果我有一个视图模型,例如:
public interface IMainMenuViewModel
{
bool CanDoAction1 { get; }
void DoAction1();
}
public class MainMenuViewModel : Conductor<IScreen> , IMainMenuViewModel
{
public bool CanDoAction1
{
get { return true; }
}
public void DoAction1()
{
//perform action
}
}
如何将其注入父视图模型? IMainMenuViewModel接口没有指定任何Conductor属性,所以我不能在IScreen的位置使用它,这会失败:
public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShellViewModel
{
public ShellViewModel(IMainMenuViewModel mainMenuViewModel)
{
ActivateItem(mainMenuViewModel); //mainMenuViewModel is not an IScreen
}
}
在视图模型界面中继承IScreen是否正确?即:
public interface IMainMenuViewModel : IScreen
{
bool CanDoAction1 { get; }
void DoAction1();
}
答案 0 :(得分:1)
首先我提取阅读http://blog.ploeh.dk/2011/03/03/InjectionConstructorsshouldbesimple/ 注入构造函数应该只接收依赖项。 您应该在OnInitialize或OnActivate方法中激活MainMenuViewModel。当然,您可以在ViewModel中继承IScreen。