gpt4 book ai didi

c# - 如何将多个ViewModel嵌套在顶级ViewModel中,并以一种可以分散在整个View中的层次结构进行嵌套?

转载 作者:行者123 更新时间:2023-12-03 11:00:47 24 4
gpt4 key购买 nike

现在,我有一个名为ViewModel的相当大的MainViewModel,其中包含许多命令和属性,可以将这些命令和属性组织成更合理的名称ViewModel。

但是,我只有一个窗口,因此需要能够从每个SubViewModels中选取有效的数据和命令。

我认为可以使用属性来实现,但是我不确定如何在XAML中进行处理。 (或者如果ViewModels本身有暗示)

我意识到我可以根据需要在SubViews上设置DataContext,但我想避免让View指示ViewModel的层次结构/组织。

前任。伪码

SubAViewModel mvmB = new SubBViewModel();
SubAViewModel mvmA = new SubAViewModel();
MainViewModel mvm = new MainViewModel( mvmA, mvmB );

<Window DataContext="{StaticResource MainViewModel}">

//This is clearly wrong but is sort of what I am trying to achieve
<MenuItem Command="{Binding Path=MainViewModel.SubAVM.TargetCmd}" />
MenuItem或其他一些 UserControl完全有可能想要访问 SubBViewModel中的Command和 SubAViewModel中的属性。

最佳答案

如果您将View的数据上下文设置为MainViewModel,并且将SubAVM作为这样的属性公开:

public SubViewModel SubAVM { 
get {
return subAVM;
}
set{
if (subAVM == value)
{
return;
}
subAVM = value; //implement the OnPropertyChanged ...
}
}

当然,MenuItem上的路径为SubAVM.TargetCmd,因为依赖关系层次结构的主路径已经是Menu的MainViewModel。

关于c# - 如何将多个ViewModel嵌套在顶级ViewModel中,并以一种可以分散在整个View中的层次结构进行嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com