Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf MVVM-什么';关于嵌套列表和视图模型的正确路径是什么?_Wpf_List_Mvvm_Nested_Viewmodel - Fatal编程技术网

Wpf MVVM-什么';关于嵌套列表和视图模型的正确路径是什么?

Wpf MVVM-什么';关于嵌套列表和视图模型的正确路径是什么?,wpf,list,mvvm,nested,viewmodel,Wpf,List,Mvvm,Nested,Viewmodel,事情是这样的: 我有一个GetHistoryLog视图、它的视图模型和它的模型 我有一个列表框,它指向一个observedcollection 我有另一个视图专门用于获取版本化项目,因此它是一个VersionedItemView、它的视图模型和它的模型 现在,我希望GetHistoryLog视图能够访问其变更集中的特定版本项。每个变更集可以有多个版本项目。“连接”两个视图模型的最佳方式是什么 下面是我想要做的,一个包含所有变更集和子文件的树视图,一个包含所有变更集的列表视图,以及一个单击变更集并

事情是这样的:

我有一个GetHistoryLog视图、它的视图模型和它的模型

我有一个列表框,它指向一个
observedcollection

我有另一个视图专门用于获取版本化项目,因此它是一个VersionedItemView、它的视图模型和它的模型

现在,我希望GetHistoryLog视图能够访问其变更集中的特定版本项。每个变更集可以有多个版本项目。“连接”两个视图模型的最佳方式是什么

下面是我想要做的,一个包含所有变更集和子文件的树视图,一个包含所有变更集的列表视图,以及一个单击变更集并查看修改文件的选项

基本上,访问项目列表中的项目列表,同时可以选择访问该列表中的特定索引

是否需要创建另一个视图模型?不破坏代码的最佳解决方案是什么

我希望我说得够清楚了

非常感谢

编辑:还有,有没有一种方法可以动态地将控件的DataContext设置为列表中的某个特定项

编辑:试图更清楚地解释:

HistoryLogyModel->GetHistoryLogVM->GetHistoryLogUserControl

versionedtemlogmodel->getversionedtemslogvm->getversionedtemslogusercontrol

我想要的是:

historyGenetryModel+VersionedItemLogModel->?->GetCompleteHistoryLogWithVersionedItemsUserControl

(简称,但只是为了理解)根据你的描述,我想你不需要更多了。您已经有了一个非常层次化的域对象图,它将支持您已经描述的父子关系

我认为您只需要改进一下绑定和对象表示的方法。下面是一个可以帮助您解决这个问题的方法,它还提供了处理WPF TreeView的建议

如果要执行基于另一个控件(例如ListBox)的SelectedItem动态更改控件的DataContext的绑定,可以使用以下绑定语法:

DataContext="{Binding ElementName=sourceElementNameHere, Path=SelectedItem, 
    Mode=OneWay}"

这里是另一个链接

你能提供一个更简洁的描述你的领域吗?我的意思是,如果你的模型被很好地理解,那么解决M-V-VM问题就更容易了。你提供的模型的附加描述与我想要的不完全一样。似乎你有一个HistoryGenetry对象。它包含一个变更集对象(的集合?)。变更集包含n个VersionedItemLog对象(另一个集合)。这是否描述了没有虚拟机和视图/用户控件混乱的域模型。如果我不够清楚,很抱歉。是的,这描述了我的域模型:HistoryLogEntry包含变更集对象的集合。每个变更集包含n个版本化项目。