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

C# WPF MVVM-使用委托访问其他ViewModel的属性,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个MainViewModel,它以PersonViewModel和一个HouseViewModel作为属性HouseViewModel具有属性GetRooms。从PersonViewModel访问此属性的最佳方式是什么 我现在的解决方案是将MainViewModel的实例传递到PersonViewModel,然后我可以调用MainViewModel.HouseViewModel.GetRooms。然而,这似乎有点浪费 我很乐意以委托的形式传递函数,但我似乎不能用属性来传递函数。我搜索了一个

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

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

我很乐意以委托的形式传递函数,但我似乎不能用属性来传递函数。我搜索了一个这样的例子,只找到了过于复杂的技术。我假设一定有一个简单的方法来做这件事,因为这似乎是一个常见的问题。谁能举出一个有力的例子


或者还有其他我没有考虑过的替代方法吗?

如果一个方法必须在两个viewmodel之间共享,那么它应该在基本viewmodel或服务中定义。最好的方法是一个公共服务类应该包含所有的公共方法,比如GetRooms、CheckIn、CheckOut等,并且这个服务应该提供给每个使用的viewmodel


一个人得到一个房间不是更合乎逻辑吗?房子没有房间?房子里有一个人可以“得到”的房间吗?那么为什么房屋对象有一个获得房间的方法呢?当然,Person对象应该具有该属性。这是一个虚构的示例。请忽略人/房子/房间之间的任何感知逻辑。啊,好吧,然后看看
,然而,这似乎有点浪费。?
这是什么意思?我觉得可以将HouseViewModel作为参数传递给PersonViewModel构造,而不是MainViewModel。如果这样做是有意义的,那就去做,不要过度优化,否则会导致混乱。有时可读性更重要。这很公平,但你的底线在哪里?如果我需要通过几个类的实例传递MainViewModel,该怎么办?
public class HomeViewModel
{
    public HomeViewModel(IRoomService roomservice)
    {

    }
}

public class PersonViewModel
{
    public PersonViewModel(IRoomService roomservice)
    {

    }
}