我想用Xamarin.Form和MVVM开发一个简单的项目。在我的解决方案(名为XamarinPOC)中,除了标准的Xamarin.Forms项目外,我还为模型(XamarinPOC.Model)和ViewModel(XamarinPOC.ViewModel)提供了一个单独的项目。将BindingContext设置为Xamarin上的XAML中的ViewModel
我在XamarinPOC.ViewModel项目定义为一个BaseViewModel一种抽象类(实现INotifyPropertyChanged接口),我已经创建了一个扩展BaseViewModel类的简单属性SummaryViewModel课后:
namespace XamarinPOC.ViewModel
{
public class SummaryViewModel : BaseViewModel
{
private string _test = "The binding is OK!";
public String test
{
get
{
return _test;
}
set
{
_test = value;
OnPropertyChanged("test");
}
}
public SummaryViewModel(){}
}
}
接下来,我在XamarinPOC项目中创建了一个简单的ContentPage(SummatyView),其中只包含一个标签,用于显示在ViewModel中定义的文本。我想使用XAML来定义视图和绑定,但是当我运行应用程序时什么都没有显示,我在编译时和运行时没有错误,但不显示文本。我的XAML是这样
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XamarinPOC.ViewModel,assembly=XamarinPOC.ViewModel"
x:Class="XamarinPOC.Summary"
Title="Summary List"
BindingContext="XamarinPOC.ViewModel.SummaryViewModel">
<StackLayout>
<Label Text="{Binding test}"/>
</StackLayout>
</ContentPage>
最后我app.cs是:
namespace XamarinPOC
{
public class App : Application
{
public App()
{
MainPage = new Summary();
}
}
}
在XamarinPOC项目,我已经加入到XamarinPOC.ViewModel和XamarinPOC.Model组件的参考。
我认为问题出在绑定的XAML定义上,但是我没有找到错误。我错在哪里?
您需要分配的BindingContext一个*实例*您的视图模型,而不是类定义本身 – Jason