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

我目前的解决方案是将MainViewModel实例传递给PersonViewModel,然后可以调用MainViewModel.HouseViewModel.GetRooms。但是,这似乎有点浪费。

我很高兴将函数作为委托(delegate)传递,但似乎无法通过Property来实现。我搜索了一个这样的示例,只提出了过于复杂的技术。我假设必须有一种简单的方法来执行此操作,因为这似乎是一个常见问题。谁能指出一个有力的例子?

还是有我没有考虑过的另一种替代方法?

最佳答案

如果必须在两个 View 模型之间共享方法,则应在基本 View 模型或服务中定义该方法。最好的方法是通用Service类应包含所有通用方法,如GetRooms,CheckIn,CheckOut等。并且应使用Dependency Injection将此服务提供给每个 View 模型。

public class HomeViewModel
{
    public HomeViewModel(IRoomService roomservice)
    {

    }
}

public class PersonViewModel
{
    public PersonViewModel(IRoomService roomservice)
    {

    }
}

关于c# - WPF MVVM-使用委托(delegate)访问其他ViewModel的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25032031/

10-11 02:07