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é.
App.xaml
Dans la vue principale, utilisez
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
app.xaml (datatemplates):
<code class="language-csharp">public class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; }</code>
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>
. 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!