Dalam WPF, ia adalah kaedah yang biasa untuk membuat kawalan pengguna asas yang menyediakan fungsi perkongsian kawalan pengguna yang diperolehi. Untuk memastikan fungsi ini diakses dari keadaan yang diperolehi, acara ini biasanya dipanggil dalam kod tersembunyi yang tersembunyi dari kawalan pengguna yang diperolehi, contohnya:
Walau bagaimanapun, kaedah pengendali kawalan pengguna asas mungkin memerlukan jenis parameter tertentu:
<code class="language-csharp">private void SomeClick(object sender, RoutedEventArgs e) { HandleClick(sender); MyDataGrid.Items.Refresh(); }</code>
Jika DataContext dalam kawalan pengguna yang diperolehi diperolehi, seperti BaseViewModel & lt; Ini kerana DataContext tidak boleh ditukar secara langsung kepada BaseViewModel & LT;
<code class="language-csharp">public class BaseUserControl : UserControl { protected void HandleClick(object sender) { var vm = (BaseViewModel<零件>)DataContext; ... } }</code>
Kenapa kita tidak boleh menukar generik & lt;
dilarang untuk menukar generik & lt; Bayangkan, tukar & lt; Anda kemudian boleh menambah objek domba untuk menyenaraikan & lt; alternatif
Untuk menyelesaikan masalah ini, penyelesaian alternatif berikut boleh dipertimbangkan:
menggunakan antara muka dan bukannya generik untuk menentukan kontrak yang mesti dilaksanakan DataContext.
menggunakan antara muka kolaboratif atau penyongsang untuk secara paksa membaca hanya jenis generik.
Atas ialah kandungan terperinci Bagaimana untuk selamat melemparkan generik ke generik di WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!