Set BindingContext to ViewModel in XAML auf Xamarin.Forms
Ich möchte ein einfaches Projekt mit Xamarin.Form und MVVM entwickeln. In meiner Lösung (XamarinPOC) habe ich (zusätzlich zu den Standardprojekten von Xamarin.Forms) ein separates Projekt für das Modell (XamarinPOC.Model) und ein separates Projekt für das ViewModel (XamarinPOC.ViewModel).
Ich habe in einem XamarinPOC.ViewModel-Projekt eine abstrakte Klasse für eine BaseViewModel-Klasse definiert (die die INotifyPropertyChanged-Schnittstelle implementiert) und nachdem ich eine SummaryViewModel-Klasse erstellt habe, die die BaseViewModel-Klasse mit einer einfachen Eigenschaft erweitert:
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(){}
}
}
Next Ich habe 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 eine XAML zum Definieren der Ansicht und der Bindung verwenden, aber wenn ich die App starte, wird nichts angezeigt. Es treten keine Fehler bei der Kompilierung und zur Laufzeit auf, aber der Text wird nicht angezeigt. Mein XAML ist dieses
<?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 ist meine app.cs:
namespace XamarinPOC
{
public class App : Application
{
public App()
{
MainPage = new Summary();
}
}
}
Im XamarinPOC-Projekt habe ich einen Verweis auf die Assemblys XamarinPOC.ViewModel und XamarinPOC.Model hinzugefügt.
Ich denke, das Problem liegt in der XAML-Definition der Bindung, aber ich finde den Fehler nicht. Wo irre ich mich?