Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memanggil Fungsi Model Paparan Utama daripada Model Paparan Lain dalam WPF?

Bagaimanakah Saya Boleh Memanggil Fungsi Model Paparan Utama daripada Model Paparan Lain dalam WPF?

DDD
DDDasal
2025-01-05 12:08:39126semak imbas

How Can I Call Main View Model Functions from Other View Models in WPF?

Fungsi Panggilan dalam Model Paparan Utama daripada Model Paparan Lain

Dalam senario ini, anda mempunyai program dengan TreeView dan contentPresenters, masing-masing dengan model pandangan mereka sendiri. MainWindowViewModel mengawal paparan dalam contentPresenters dan anda mahu mengemas kininya secara manual.

Mengakses MainWindowViewModel daripada TreeViewViewModel

Coretan kod yang disediakan cuba mendapatkan MainWindowViewModel menggunakan DataConnectViewModel , yang tidak betul kerana MainWindowVM bukan TreeViewViewModel's DataContext.

Delegasikan Objek untuk Komunikasi Ibu Bapa-Anak

Pendekatan biasa ialah menggunakan objek perwakilan, yang membolehkan komunikasi dalam kedua-dua arah antara model paparan ibu bapa dan anak . Objek perwakilan boleh digunakan untuk sebarang hubungan ibu bapa-anak, bukan hanya untuk menghantar parameter antara model paparan.

Kaedah Memanggil dalam MainWindowViewModel

Untuk memanggil kaedah dalam MainWindowViewModel daripada TreeViewViewModel, gantikan perwakilan dalam jawapan yang dipautkan dengan kaedah anda. Contohnya:

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call MainWindowViewModel method here
    MainWindowVM.UpdateDisplay();
}

Sebagai alternatif, anda boleh menentukan perwakilan yang tidak mengambil sebarang parameter:

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

Dalam model paparan ibu bapa, anda kemudian boleh memanggil kaedah dalam anak lihat model apabila perwakilan dipanggil:

public void ChildViewModel_OnReadyForUpdate()
{
    UpdateDisplay();
}

Pengikatan Terus ke Paparan Induk Model

Satu lagi pendekatan yang lebih mudah ialah mengikat terus daripada paparan kanak-kanak kepada model paparan ibu bapa. Ini membenarkan anda untuk mengikat, sebagai contoh, sifat Button.Command dalam paparan anak kepada sifat ICommand dalam model paparan induk:

<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

Ini mengandaikan bahawa MainWindowViewModel ditetapkan sebagai Konteks Data bagi MainWindow.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Fungsi Model Paparan Utama daripada Model Paparan Lain dalam WPF?. 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