freshmvvm从后面的页面代码访问PageModel

Mik*_*ith 5 mvvm xamarin xamarin.forms freshmvvm

我在freshmvvm框架中使用了xamarin形式。

我想知道如何才能跳过使用xaml,而仅从c#中的代码访问绑定数据。

是否有任何代码示例可以帮助您?

Ger*_*uis 7

尽管这违反了MVVM的原理,但是当然有一种方法可以做到这一点。

如果没有MVVM框架,您将只能手动创建ViewModel并自行设置BindingContextdocumentation)。MVVM框架为您做的(唯一的)事情是自动绑定,因此您不必一遍又一遍地编写相同的代码。

因此,假设您有这个ViewModel,请注意我使用PageModel来匹配FreshMvvm的命名:

// SamplePageModel.cs
public class SamplePageModel
{
    public string Foo { get; set; } = "Bar";
}
Run Code Online (Sandbox Code Playgroud)

现在在我的页面中,我将BindingContext设置如下:

// SamplePage.cs
// ... Skipped code, just constructor here:
public SamplePage()
{
    InitializeComponent();

    BindingContext = new SamplePageModel();
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以绑定到的任何属性SamplePageModel

FreshMvvm自动完成此部分。如果出于某种原因,如果您想直接访问ViewModel / PageModel,请执行相反的操作。您可以在页面的某处或代码隐藏处执行以下操作:

// ... Some code here
var pageModel = BindingContext as SamplePageModel;
// ... More code here
Run Code Online (Sandbox Code Playgroud)

现在,如果pageModelnull存在,您将拥有绑定数据并填充的PageModel!

  • 感谢您的答复,它确实有助于了解freshmvvm :) (2认同)