【问题标题】:Practical example of MVVM for Xamarin.Forms?Xamarin.Forms 的 MVVM 的实际示例?
【发布时间】:2019-06-30 11:58:02
【问题描述】:

自从我开始了解Xamarin.Forms 以来,我就读到MVVM 是它的首选架构。这对我来说是全新的,所以请耐心等待。

在工作中,典型的应用程序(asp.net 或 Windows 窗体)将包含一个事件处理程序,该处理程序调用一个方法并将其显示到 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?可以是伪代码;它不需要构建/编译。我只是想看看它会是什么样子。

【问题讨论】:

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


    【解决方案1】:

    所以只是详细说明命令及其工作原理。

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

    您的 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" />
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我明白这一点。这就是为什么我在看一个足够简单的例子来实现这样的事情。
      猜你喜欢
      • 2014-11-16
      • 2010-09-29
      • 2018-04-18
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2015-09-08
      • 2019-10-10
      • 1970-01-01
      相关资源
      最近更新 更多