0
votes

Comment fournir viewmodel qui a constructeur avec des paramètres à la liaison de page XAMLContext

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>


0 commentaires

3 Réponses :


0
votes

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>


0 commentaires

1
votes

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> xxx pré>

page xaml p> xxx pré>

Constructeur de page p>

public SomePage()
{
    this.BindingContext = new SomeViewModel("real value");
}


0 commentaires

1
votes

Après avoir regardé Repo WeeklyXamarin.mobile Repo . J'ai constaté que cela peut être bien implémenté avec les éléments suivants:

  • Créer un PageBase code> Comme suivez: li> ul>

    classe publique PageBase: ContentPage {} P>

     public AboutViewModel(INavigationService navigation, IDataStore dataStore) : base(navigation)
    


0 commentaires