WPF MVVM -使用委托访问其他视图模型的属性

本文关键字:视图 其他 模型 属性 访问 MVVM WPF | 更新日期: 2023-09-27 18:15:28

我有一个MainViewModel,它的特性是PersonViewModelHouseViewModelHouseViewModel具有GetRooms的属性。从PersonViewModel访问该属性的最佳方法是什么?

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

我很乐意传递一个函数作为一个委托,但我似乎不能这样做与一个属性。我已经寻找了一个这样的例子,只提出了过于复杂的技术。我假设一定有一个简单的方法来做到这一点,因为它似乎是一个常见的问题。谁能举出一个有力的例子?

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

WPF MVVM -使用委托访问其他视图模型的属性

如果一个方法必须在两个视图模型之间共享,它应该在基视图模型或服务中定义。最好的方法是一个公共服务类应该包含所有公共方法,如GetRooms、CheckIn、CheckOut等。这个服务应该通过依赖注入提供给每个视图模型。

public class HomeViewModel
{
    public HomeViewModel(IRoomService roomservice)
    {
    }
}
public class PersonViewModel
{
    public PersonViewModel(IRoomService roomservice)
    {
    }
}