是否可能在MVVM上松散耦合?

时间:2014-04-26 22:42:58

标签: c# mvvm

我正在使用Caliburn.Micro开发我的第一个MVVM应用程序。如果正确理解Loosely Coupled的概念,我必须能够提取我的项目的每个类,将它隔离在一个空白的解决方案上,它必须编译没有问题,因为没有直接引用其他类,对吧?

所以我的问题是:

为不同的视图创建视图模型并保留松散耦合模型的位置在哪里?

我问这个是因为网上的很多例子都是这样的:

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive {  
int count = 1;  

public void OpenTab() {  
    ActivateItem(new TabViewModel {  
        DisplayName = "Tab " + count++  
    });  
}  
}  

TabViewModel是所需视图的viewmodel。但是在这里,shellviewmodel与TabViewModel紧密耦合

我尝试的其他选项是创建某种类似的菜单类:

class MenuItem
{
    public string Title { get; set; }
    public Type ViewType { get; set; }
}

并像这样使用它:

new MenuItem(){Title="My menu",ViewType=typeof(ProductosViewModel)}

并使用通用创建过程,但此类再次与ProductosViewModel结合。

那么我还有其他选择吗?或者我应该忘记严格的松散耦合? 谢谢!

0 个答案:

没有答案