WPF MVVM - 使用委托访问其他ViewModel的属性

时间:2014-07-30 08:26:49

标签: c# wpf mvvm

我有一个MainViewModel,其中包含PersonViewModelHouseViewModel作为属性。 HouseViewModel拥有属性GetRooms。从PersonViewModel访问此属性的最佳方法是什么?

我的解决方案是将MainViewModel的实例传递给PersonViewModel,然后我可以致电MainViewModel.HouseViewModel.GetRooms。然而,这似乎有点浪费。

我很高兴将一个函数作为委托传递,但我似乎无法使用Property执行此操作。我已经搜索了一个这样的例子,并且只提出了过于复杂的技术。我假设必须有一个简单的方法,因为这似乎是一个常见的问题。有谁可以指出一个很好的例子?

或者还有另一种我没有考虑的替代方法吗?

1 个答案:

答案 0 :(得分:2)

如果必须跨两个viewmodel共享方法,则应在基本视图模型或服务中定义该方法。最好的方法是常见的Service类应该包含GetRooms,CheckIn,CheckOut等所有常用方法。此服务应该使用Dependency Injection提供给每个viewmodel。

public class HomeViewModel
{
    public HomeViewModel(IRoomService roomservice)
    {

    }
}

public class PersonViewModel
{
    public PersonViewModel(IRoomService roomservice)
    {

    }
}