Maison > développement back-end > C++ > Comment implémenter la navigation Simple View dans WPF MVVM sans frameworks externes ?

Comment implémenter la navigation Simple View dans WPF MVVM sans frameworks externes ?

Barbara Streisand
Libérer: 2025-01-26 20:41:14
original
629 Les gens l'ont consulté

How to Implement Simple View Navigation in WPF MVVM without External Frameworks?

Implémentation de la navigation de vue simple dans WPF MVVM (pas de cadre externe)

Afficher la navigation dans l'application WPF MVVM permet de basculer entre les différentes interfaces utilisateur. Cet article explore un moyen simple d'atteindre la navigation sans s'appuyer sur des cadres tels que MVVM Light.

Définissez le modèle de vue

Créez une classe de modèle de vue de base, définissez les attributs publics et interfaces. Chaque modèle de vue spécifique (par exemple,

,

, INotifyPropertyChanged) doit hériter de la classe auto-basée. MainViewModel PersonViewModel Connectez la vue au modèle de vue CompanyViewModel

Dans , le modèle de données associé au modèle de vue sera déclaré. Cela présentera la vue correspondante basée sur le modèle de vue spécifié. Afficher les modèles de vue dans ContentControl

App.xaml Dans la vue principale, utilisez

qui est lié aux attributs

pour afficher différentes vues. Modifiez le modèle de vue pour changer la vue affichée. De la navigation sous-vue

ViewModel Pour naviguer à partir de la sous-vue, créez une commande dans le modèle de vue principale et liez-la au bouton de la sous-vue. Lorsque cette commande est exécutée, la commande modifiera l'attribut ContentControl dans le modèle de vue principale, déclenchant ainsi la commutation de vue.

Exemple de code

BaseViewModel:

ViewModel

MainViewModel:

app.xaml (datatemplates):

<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
}</code>
Copier après la connexion
Exemple Utilisation:

Veuillez noter que cet exemple nécessite l'implémentation de l'interface
<code class="language-csharp">public class MainViewModel : BaseViewModel
{
    private BaseViewModel viewModel;
    public BaseViewModel ViewModel
    {
        get { return viewModel; }
        set { viewModel = value; OnPropertyChanged(nameof(ViewModel)); }
    }

    public ICommand DisplayPersonView { get; }

    public MainViewModel()
    {
        DisplayPersonView = new RelayCommand(() => ViewModel = new PersonViewModel());
    }

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

public class RelayCommand : ICommand
{
    private readonly Action execute;
    public event EventHandler CanExecuteChanged;

    public RelayCommand(Action execute)
    {
        this.execute = execute;
    }

    public bool CanExecute(object parameter) => true;
    public void Execute(object parameter) => execute();
}</code>
Copier après la connexion
et une classe simple

. Les méthodes et la classe doivent être ajustées ou remplacées en fonction de votre situation réelle. Le préfixe représente votre espace de nom de vue. Assurez-vous que votre vue et votre modèle de vue sont correctement définis et associés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal