目前我找到XAML视图绑定的方式是单击XAML诊断工具(屏幕顶部的小黑条) - >选择控件 - >在代码中看到它的属性 - >请参阅“DataContext”属性。
通过这种方式,您可以找到哪个viewmodel绑定到哪个视图,但这是一个非常缓慢的过程。
我正在寻找一种方法来查找所有当前绑定的视图 - 视图模型对。这显然只能在运行时工作,但那没关系。 一段代码,一个nuget扩展或任何东西都会这样做会给我一个绑定列表。 谢谢!
答案 0 :(得分:0)
我认为反思可以带给你很长的路。
使用此方法迭代输出目录中的文件。并找到所有程序集
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
使用TypeDescriptor获取更近的信息
ICustomTypeDescriptor typeDescriptor = dataContext as ICustomTypeDescriptor;
https://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.aspx
找出基础类型。
这可能是我头脑中的步骤。 由于powershell也可以访问dotnet类,因此可以是输出所需信息的脚本,也可以在VisualStudio中执行。
但是......你也可以介绍一些惯例。我见过的大多数项目都有相同的命名模式。 CustomerView
- > CustomerViewModel
。这也适用于组件OrderTableRowView
- > OrderTableRowViewModel
。有了这个,你总能知道哪个ViewModel
属于哪个视图(或视图的一部分)。
顺便说一句:如果你有这么复杂的结构,那么多Views
和ViewModels
就可以考虑像服务这样的对象和ViewModel。有时称为ViewModelLocatorService
。这样可以集中查看View和ViewModel之间的连接。
HTH;)