我想使用Xamarin.Form和MVVM开发一个简单的项目。在我的解决方案(名为XamarinPOC)中,除了标准Xamarin.Forms项目之外,我还有一个单独的模型项目(XamarinPOC.Model)和一个单独的ViewModel项目(XamarinPOC.ViewModel)。
我在XamarinPOC.ViewModel项目中为BaseViewModel类(实现了INotifyPropertyChanged接口)定义了一个抽象类,并在我创建了一个SummaryViewModel类之后,该类使用简单的属性扩展了BaseViewModel类:
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定义中,但是我没有找到错误。我哪里错了?
要将视图绑定到Xaml的viewmodel,请按以下方式进行操作
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:viewModels="clr-namespace:XamarinPOC.ViewModel; assembly=XamarinPOC.ViewModel"
x:Class="XamarinPOC.Summary"
Title="Summary List">
<ContentPage.BindingContext>
<viewModels:SummaryViewModel/>
</ContentPage.BindingContext>
<StackLayout>
<Label Text="{Binding test}"/>
</StackLayout>
</ContentPage>
我注意到的一个旁注是命名约定,最好将所有ViewModels(即使只有一个viewModel)放在名为“ ViewModel s ” 的文件夹中,因此您的情况下的命名空间为XamarinPOC.ViewModel s
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句