我在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/

10-12 02:34