c# - Xamarin.Forms 的 MVVM 的实际示例?
问题描述
自从我开始学习 以来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
.
我想将这个完全相同的想法应用于我的初学者移动应用程序。问题是我还没有找到一个简单的工作示例来实现 MVVM 来实现我想要完成的这个非常简单的功能。我发现的大多数示例都非常令人费解,以至于它们带来的困惑多于帮助。
所以我的问题是:如何在这个例子中实现 MVVM?可以是伪代码;它不需要构建/编译。我只是想看看它会是什么样子。
解决方案
因此,只是详细说明命令及其工作方式。
以一个简单的登录按钮为例。
您的 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" />
推荐阅读
- javascript - 使用 JavaScript 将 var res 更改为给定数组的最大值
- sql - 选择在不同行上具有 NBR 1 和 2 行的 ID
- javascript - 我无法向邮箱发送电子邮件
- ssis - RetainSameConnection 的设置存储在哪里?
- opencart - 如何从 opencart 2.3 中的系统购物车库访问位于目录中的自定义模型
- regex - 如何在splunk中使用正则表达式从多个句子中提取一个句子
- react-admin - TabbedShowLayout - 如何获取当前选定的选项卡?
- c++ - strlen() 不能很好地处理特殊字符
- unix - 从控制台输出格式化 SSL 证书?
- java - 如何在 mapReduce Hadoop 框架中对值(及其对应的键)进行排序?