Maison > développement back-end > C++ > Comment un ViewModel peut-il fermer un formulaire tout en adhérant aux principes MVVM ?

Comment un ViewModel peut-il fermer un formulaire tout en adhérant aux principes MVVM ?

Linda Hamilton
Libérer: 2025-01-23 02:37:12
original
410 Les gens l'ont consulté

How Can a ViewModel Close a Form While Adhering to MVVM Principles?

Comment un ViewModel peut-il fermer un formulaire tout en conservant l'architecture MVVM ?

Le principe de base de MVVM (Model-View-ViewModel) dicte que le ViewModel ne doit pas connaître les spécificités de la vue. Cependant, il existe des scénarios dans lesquels ViewModel doit signaler la fermeture du formulaire. Explorons deux solutions qui respectent les meilleures pratiques MVVM :

Méthode 1 : Propriété ci-jointe

Cette méthode utilise une propriété attachée pour combler le fossé de communication entre le ViewModel et la View. La propriété attachée définit directement le DialogResult du formulaire.

Mise en œuvre :

<code class="language-csharp">using System.Windows;
using System.Windows.Interactivity;

namespace ExCastle.Wpf
{
    public static class DialogCloser
    {
        public static readonly DependencyProperty DialogResultProperty =
            DependencyProperty.RegisterAttached(
                "DialogResult",
                typeof(bool?),
                typeof(DialogCloser),
                new PropertyMetadata(DialogResultChanged));

        private static void DialogResultChanged(
            DependencyObject d,
            DependencyPropertyChangedEventArgs e)
        {
            var window = d as Window;
            if (window != null)
                window.DialogResult = e.NewValue as bool?;
        }
        public static void SetDialogResult(Window target, bool? value)
        {
            target.SetValue(DialogResultProperty, value);
        }
    }
}</code>
Copier après la connexion

Intégration XAML :

<code class="language-xml"><Window ... xc:DialogCloser.DialogResult="{Binding DialogResult}" xmlns:xc="clr-namespace:ExCastle.Wpf">
    ...
</Window></code>
Copier après la connexion

Le ViewModel définit la propriété DialogResult, déclenchant la logique de la propriété attachée pour fermer la fenêtre.

Méthode 2 : élément d'interaction (comportement ou commande)

Cette approche utilise un comportement ou une commande dans la vue pour agir en tant qu'intermédiaire. Le ViewModel déclenche le comportement ou la commande, qui ferme ensuite le formulaire. Cela offre plus de flexibilité mais ajoute de la complexité.

Conclusion :

Les deux techniques permettent la fermeture de formulaire pilotée par ViewModel sans violer MVVM. L’approche des propriétés attachées est plus simple et plus directe, tandis que l’approche des éléments d’interaction offre une plus grande extensibilité. Le choix optimal dépend des besoins spécifiques et de la complexité de l'application.

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