Cara Melaksanakan Fungsi dalam Model Parent View daripada Model Child View
Aplikasi anda terdiri daripada TreeView, dua contentPresenters dan paparan berasingan model untuk setiap elemen UI, termasuk tetingkap utama. Untuk mengemas kini paparan, anda cuba menggunakan kaedah dalam MainWindowViewModel daripada TreeViewViewModel.
Seperti kes yang serupa, penyelesaian yang berdaya maju melibatkan penggunaan objek perwakilan. Semak respons forum sebelumnya yang bertajuk "Melalui parameter antara model pandangan" untuk penjelasan mendalam dan pelaksanaan praktikal. Hanya gantikan perwakilan dalam contoh itu dengan kaedah yang diingini, dan mereka akan berfungsi sama.
Kemas kini
Untuk memanggil kaedah terus daripada melepasi parameter, pertimbangkan pengendali perwakilan yang diubah suai di bawah:
public void ParameterViewModel_OnParameterChange(string parameter) { // Call your method here }
Perwakilan ini berfungsi sebagai laluan ke model paparan induk, mendayakan kefungsian seperti peristiwa ("ReadyForYouToCallMethodNow"). Sebagai alternatif, anda boleh menentukan perwakilan tanpa sebarang parameter input:
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
Dalam model paparan induk, selepas melampirkan pengendali seperti yang digambarkan dalam contoh sebelumnya, anda boleh menggunakan kaedah:
public void ChildViewModel_OnReadyForUpdate() { // Call your method here UpdateDisplay(); }
Jika berbilang model paparan kanak-kanak terlibat, anda boleh menentukan perwakilan dalam kelas berasingan yang boleh diakses oleh semua model.
Kemas kini 2
Setelah analisis lanjut, pendekatan yang lebih mudah mungkin memadai. Anda boleh mengikat terus elemen paparan anak kepada sifat dalam model paparan induk. Sebagai contoh, coretan kod berikut dalam TreeViewView anda mengikat sifat Button.Command kepada sifat ICommand dalam MainWindowViewModel:
<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Ini mengandaikan bahawa contoh model paparan induk ditetapkan sebagai Konteks Data bagi MainWindow.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Fungsi Model Paparan Ibu Bapa daripada Model Paparan Kanak-kanak dalam WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!