我对使用Xamarin.forms进行跨平台开发非常陌生。我的代码应该是高度可单元测试的,并且我创建了一个ViewModel
类来在我的View
和Model
之间进行通信。我想知道,如果我们要访问viewmodel内部的Xamarin.forms(使用Xamarin.Forms;),是一种不好的做法还是违反了MVVM概念。如果是这样,我们如何在ViewModel中使用Command来绑定视图。
谢谢
答案 0 :(得分:1)
从视图模型访问视图确实是在“反对” MVVM原理。所以,您说对了!绑定Command
并不难,并且可以像您可能使用的任何其他绑定一样工作。
在视图模型中,只需为Command
定义一个属性:
public class YourViewModel
{
public Command YourCommand { get; set; }
}
然后在构造函数中定义应执行的逻辑:
public YourViewModel()
{
YourCommand = new Command(() =>
{
Console.WriteLine("TADA!");
});
}
当然,您可以定义它是它自己的单独方法或以其他方式声明它。为简洁起见,我现在已内联完成。
要从XAML绑定到它,只需执行以下操作:
<Button Text="Make it so!" Command="{Binding YourCommand}" />
,并确保已将页面上的BindingContext
属性设置为视图模型。如果您使用的是MVVM框架,那么您可能已经这样做了。
有时,您可能希望绑定到ListView
或类似名称中的单元格。在这种情况下,请记住范围会发生变化。然后,您将绑定到该单元而不是页面后面的视图模型。因此,您必须引用该页面才能到达该BindingContext
。但是当您到达那座桥时,请记住,那里有一些特别之处。
答案 1 :(得分:0)
使用以下代码,因此您无需在ViewModel中导入Xamarin.Forms:
按钮行为
hello: world
查看
datePicker.maximumDate = date.addingTimeInterval(604800)