适用于Xamarin.Forms的MVVM的实际示例?

时间:2019-02-06 13:50:40

标签: c# mvvm xamarin.forms visual-studio-2017

自从我开始学习Xamarin.Forms以来,我就读过MVVM是首选的体系结构。这对我来说是全新的,所以请耐心等待。

在工作中,典型的应用程序(asp.net或Windows Forms)将包括事件处理程序,该事件处理程序调用方法并将其显示在UI控件中:

private void buttonShow_Click(object sender, EventArgs e)
{
    Vendors.Sales carSales = new Vendors.Sales();
    DataTable carsTable = carSales.SalesMade();
    DatagridSales.datasource = carsTable;
}

carSales.SalesMade是一种存在于某处的方法,该方法返回我在UI中显示的列表。我不知道carSales.SalesMade是什么;我只知道它返回一个datatable

我想将其应用于初学者的移动应用中的是相同的 idea 。问题是我还没有找到一个简单的工作示例来实现我想要完成的非常简单的功能的MVVM。我发现的大多数示例都很复杂,以至于混淆不清。

所以我的问题是:如何在此示例中实现MVVM?它可以是伪代码;它不需要构建/编译。我只想看看它会是什么样。

2 个答案:

答案 0 :(得分:2)

因此,仅详细说明命令及其工作方式。

以一个简单的登录按钮示例为例。

您的ViewModel将具有一个命令来处理登录按钮的单击,如下所示:

public ICommand LoginCommand {get; set;};

该命令在触发时需要一个动作来调用。

因此,在构造函数中,您可以使用以下命令初始化命令:

LoginCommand = new Command(Login);

Login Action对应于您在ViewModel中拥有的方法,如下所示:

private void Login()
{
   //do login stuff
}  

最后,在您的视图中,将命令绑定到控件(在本例中为登录按钮):

 <Button x:Name="loginButton" Command="{Binding LoginCommand}" Text="Login" />

答案 1 :(得分:1)

问题在于使用事件处理程序是您在MVVM中不应该执行的操作。在这种情况下,应将Command绑定到按钮。