目前,我找到 XAML 视图绑定到的方法是单击 XAML 诊断工具(屏幕顶部的小黑条)->选择控件 ->在代码中查看其属性 ->查看"数据上下文"属性。
通过这种方式,您可以找到哪个视图模型绑定到哪个视图,但这是一个非常缓慢的过程。
我正在寻找一种查找所有当前绑定视图 - 视图模型对的方法。这显然只在运行时有效,但这很好。 一段代码,一个nuget扩展或任何可以做的事情,可以给我一个绑定列表。 谢谢!
我认为反思可以带给你很长的路。
使用此方法循环访问输出目录中的文件。并查找所有程序集
Directory.GetFiles()
https://msdn.microsoft.com/en-us/library/07wt70x2.aspx
然后加载程序集并查找正确的类。
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("c:\Sample.Assembly.dll");
https://msdn.microsoft.com/en-us/library/system.reflection.assembly.gettypes.aspx
使用类型描述符获取更多信息
ICustomTypeDescriptor typeDescriptor = dataContext as ICustomTypeDescriptor;
https://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.aspx
并找出底层类型。
这可能是我头顶上的台阶。 由于Powershell还可以访问dotnet类,因此这可能是输出所需信息的脚本,也可以在VisualStudio中执行。
但。。。您还可以介绍一些约定。我见过的大多数项目都有相同的命名模式。CustomerView
->CustomerViewModel
.这也适用于 ->OrderTableRowViewModel
OrderTableRowView
的组件。有了这个,您将始终知道哪个ViewModel
属于哪个视图(或视图的一部分)。
顺便说一句:如果你有如此复杂的结构和如此多的Views
和ViewModels
那么可能是时候考虑将视图和视图模型配对的服务了。有时称为ViewModelLocatorService
。这使视图和视图模型之间的连接保持集中。
HTH ;)