【发布时间】:2019-10-10 06:55:57
【问题描述】:
进一步 This Question 关于 BindingContext
我正在查看一个实现 MVVM 的 Xamarin.Forms 项目,当我查看 XAML 页面时,例如 SomePage.xaml 并且我想找到具有该页面逻辑的 ViewModel,它通常很受欢迎并且错过了。
在更简单的 Xamarin.Forms 应用程序中,我只需查看 SomePage.xaml.cs 即可查看 bindingContext。
但在更大的应用程序中,这似乎是“在某处抽象”
例如在SomePage.xaml 我看到了:
x:Class="MyApp.SomePage"
但这通常不是包含代码的类,它似乎是 XAML 文件的代码表示
当我搜索SomePageViewModel.cs 时,我更幸运,但并非一直如此。
在代码中搜索术语bindingContext 没有结果。
我的问题是我还能在哪里寻找
bindingContext,以确定哪些类包含控制 XAML 页面的代码。
似乎这在某种程度上被抽象了,因为我在代码中看到了BindableBase。
【问题讨论】:
-
如果在 .cs 或 .xaml 中没有设置
BindingContext,我会搜索页面的引用,因为他们可能会在推送页面之前创建页面并在那里设置上下文。 -
它可以在 XAML 中设置,或者他们可以使用像 PRISM 这样的库来处理它。如果不知道您正在查看的具体示例,就不可能说出来。
-
@Jason 代码使用了PRISIM,使用PRISM的时候你一般在哪里找绑定?
-
@Nick 所以我认为可能存在一个声明页面及其绑定的类,但是当我按页面名称搜索时,我应该能够找到该文件,但事实并非如此.
-
如果视图有一个父类,它可能被设置在那里。检查视图是如何在应用程序中实例化的。依赖注入之类的抽象可能会使查找依赖项变得更加困难。还有一种称为 ViewModel 的模式,其中 View 是在创建 ViewModel 的实例时创建的......
标签: c# xaml xamarin xamarin.forms