Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah ViewModel Boleh Menutup Borang Semasa Mematuhi Prinsip MVVM?

Bagaimanakah ViewModel Boleh Menutup Borang Semasa Mematuhi Prinsip MVVM?

Linda Hamilton
Linda Hamiltonasal
2025-01-23 02:37:12372semak imbas

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

Bagaimanakah ViewModel boleh menutup borang sambil mengekalkan seni bina MVVM?

Prinsip teras MVVM (Model-View-ViewModel) menentukan bahawa ViewModel harus kekal tidak mengetahui butiran View. Walau bagaimanapun, senario timbul di mana ViewModel perlu menandakan penutupan borang. Mari terokai dua penyelesaian yang menyokong amalan terbaik MVVM:

Kaedah 1: Harta Terlampir

Kaedah ini menggunakan sifat yang dilampirkan untuk merapatkan jurang komunikasi antara ViewModel dan View. Sifat yang dilampirkan secara langsung menetapkan DialogResult borang.

Pelaksanaan:

<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>

Penyepaduan XAML:

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

ViewModel menetapkan sifat DialogResult, mencetuskan logik sifat yang dilampirkan untuk menutup tetingkap.

Kaedah 2: Elemen Interaksi (Tingkah Laku atau Perintah)

Pendekatan ini menggunakan Tingkah Laku atau Perintah dalam Pandangan untuk bertindak sebagai perantara. ViewModel mencetuskan Gelagat atau Perintah, yang kemudiannya menutup borang. Ini menawarkan lebih fleksibiliti tetapi menambahkan kerumitan.

Kesimpulan:

Kedua-dua teknik mendayakan penutupan borang dipacu ViewModel tanpa melanggar MVVM. Pendekatan sifat yang dilampirkan adalah lebih mudah dan lebih langsung, manakala pendekatan elemen interaksi memberikan kebolehlanjutan yang lebih besar. Pilihan optimum bergantung pada keperluan khusus dan kerumitan aplikasi.

Atas ialah kandungan terperinci Bagaimanakah ViewModel Boleh Menutup Borang Semasa Mematuhi Prinsip MVVM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn