Fournir BindingContext code> de la page ViewModel à XAML a des avantages d'IntelliSense. Cependant, cette syntaxe ne fonctionne que si le
mention code> a un entrepreneur vide, par exemple: MAINPAGEVIEWMODEL ()
<ContentPage.BindingContext>
<viewModels:MainPageViewModel />
</ContentPage.BindingContext>
3 Réponses :
Je pense que vous ne pouviez pas faire cela dans XAML. Il n'y a pas de syntaxe de ce type dans xamarin.forms. L'utilisation par défaut est le constructeur sans paramètres. Faites un exemple simple pour votre référence.
ViewModel: P>
<StackLayout> <Label HorizontalOptions="CenterAndExpand" Text="{Binding text1}" VerticalOptions="CenterAndExpand"> <Label.BindingContext> <local:viewModels /> </Label.BindingContext> </Label> </StackLayout>
Vous pouvez avoir un constructeur par défaut pour votre modèle de vue qui serrerait simplement des fins IntelliSense, puis utilisez le constructeur de modèle d'affichage avec des paramètres du constructeur de la page. Cela vous donnerait l'intellisense tout en pouvant appeler le constructeur paramétré des modèles de vue. Quelque chose comme ceci:
Voir modèle p> page xaml p> Constructeur de page p> public SomePage()
{
this.BindingContext = new SomeViewModel("real value");
}
Après avoir regardé Repo WeeklyXamarin.mobile Repo . J'ai constaté que cela peut être bien implémenté avec les éléments suivants:
PageBase code> Comme suivez: li>
ul> classe publique PageBase: ContentPage {} P>
public AboutViewModel(INavigationService navigation, IDataStore dataStore) : base(navigation)