Ich möchte ein einfaches Projekt mit Xamarin.Form und MVVM entwickeln. In meiner Lösung (genannt XamarinPOC) habe ich (zusätzlich zu Standard-Xamarin.Forms-Projekten) ein separates Projekt für das Modell (XamarinPOC.Model) und ein separates Projekt für das ViewModel (XamarinPOC.ViewModel).Setze BindingContext zu ViewModel in XAML auf Xamarin.Forms
I definiert in einem XamarinPOC.ViewModel Projekt eine abstrakte Klasse für eine BaseViewModel Klasse (das implementiert die INotifyPropertyChanged-Schnittstelle) und nachdem ich eine SummaryViewModel Klasse erstellt, die BaseViewModel Klasse mit einer einfachen Eigenschaft erweitern:
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(){}
}
}
Als nächstes habe ich eine einfache ContentPage (SummatyView) in einem XamarinPOC-Projekt erstellt, die nur eine Bezeichnung enthält, die den in ViewModel definierten Text anzeigen soll. Ich möchte ein XAML verwenden, um die Ansicht und die Bindung zu definieren, aber wenn ich die App laufe, wird nichts angezeigt, ich habe keine Fehler bei der Kompilierzeit und Laufzeit, aber der Text wird nicht angezeigt. Meine XAML ist diese
<?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>
und schließlich mein app.cs ist:
namespace XamarinPOC
{
public class App : Application
{
public App()
{
MainPage = new Summary();
}
}
}
Im XamarinPOC Projekt, das ich einen Verweis auf XamarinPOC.ViewModel und XamarinPOC.Model Baugruppen hinzugefügt haben.
Ich denke, das Problem liegt in der XAML-Definition der Bindung, aber ich finde den Fehler nicht. Wo liege ich falsch?
Sie müssen sein Binding ein * Beispiel * Ihr Ansichtsmodelles, nicht die Klassendefinition selbst – Jason