Chcę opracować prosty projekt z Xamarin.Form i MVVM. W moim rozwiązaniu (o nazwie XamarinPOC) mam (oprócz standardowych projektów Xamarin.Forms) jeden oddzielny projekt dla modelu (XamarinPOC.Model) i jeden osobny projekt dla ViewModel (XamarinPOC.ViewModel).Ustaw BindingContext na ViewModel w XAML na Xamarin.Forms
I zdefiniowane w projekcie XamarinPOC.ViewModel klasy abstrakcyjnej dla klasy BaseViewModel (która implementuje interfejs INotifyPropertyChanged) i po I utworzeniu klasy SummaryViewModel że rozszerzenia klasy BaseViewModel z prostym nieruchomości:
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(){}
}
}
Następnie utworzyłem prosty ContentPage (SummatyView) w projekcie XamarinPOC, który zawiera tylko etykietę, którą chcę pokazać tekst zdefiniowany w ViewModel. Chcę użyć XAML do zdefiniowania widoku i powiązania, ale gdy uruchomię aplikację nic nie jest wyświetlane, nie mam błędów podczas kompilacji i środowiska wykonawczego, ale tekst nie jest wyświetlany. Mój XAML jest to
<?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>
i wreszcie moje app.cs jest:
namespace XamarinPOC
{
public class App : Application
{
public App()
{
MainPage = new Summary();
}
}
}
W projekcie XamarinPOC Dodałem odniesienia do XamarinPOC.ViewModel oraz zespołów XamarinPOC.Model.
Myślę, że problem tkwi w definicji wiązania XAML, ale nie znajduję błędu. Gdzie się mylę?
Musisz przypisać BindingContext instancję * Twojego ViewModel, nie definicja sama – Jason