我在freshmvvm框架中使用了xamarin形式。
我想知道如何跳过使用xaml的操作,而仅从C#中后面的代码访问绑定(bind)数据。
是否有任何代码示例可以帮助您?
最佳答案
尽管这违反了MVVM的原理,但是当然有一种方法可以做到这一点。
如果没有MVVM框架,您将只能手动创建ViewModel并自行设置BindingContext
(documentation)。 MVVM框架为您做的(唯一的)事情是自动绑定(bind),因此您不必为一次又一次地编写相同的代码而烦恼。
因此,假设您有这个ViewModel,请注意我使用PageModel来匹配FreshMvvm的命名:
// SamplePageModel.cs
public class SamplePageModel
{
public string Foo { get; set; } = "Bar";
}
现在在我的页面中,我将BindingContext设置如下:
// SamplePage.cs
// ... Skipped code, just constructor here:
public SamplePage()
{
InitializeComponent();
BindingContext = new SamplePageModel();
}
现在,您可以绑定(bind)到
SamplePageModel
的任何属性。FreshMvvm自动完成此部分。
如果出于某种原因,如果您想直接访问ViewModel/PageModel,请执行相反的操作。您可以在页面的某处或代码隐藏处执行以下操作:
// ... Some code here
var pageModel = BindingContext as SamplePageModel;
// ... More code here
现在,如果
pageModel
不是null
,那么您就有了数据绑定(bind)和填充的PageModel!关于mvvm - freshmvvm从后面的页面代码访问PageModel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37917602/