查找所有视图 - 视图模型绑定



目前,我找到 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.这也适用于 ->OrderTableRowViewModelOrderTableRowView的组件。有了这个,您将始终知道哪个ViewModel属于哪个视图(或视图的一部分)。

顺便说一句:如果你有如此复杂的结构和如此多的ViewsViewModels那么可能是时候考虑将视图和视图模型配对的服务了。有时称为ViewModelLocatorService。这使视图和视图模型之间的连接保持集中。

HTH ;)

相关内容

  • 没有找到相关文章