我有一个MainViewModel
,它具有PersonViewModel
和HouseViewModel
作为属性。 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/