Dans WPF, il s'agit d'une méthode courante pour créer un contrôle utilisateur de base qui fournit des fonctions de partage de contrôle utilisateur dérivées. Afin de s'assurer que cette fonction est accessible à partir des instances dérivées, l'événement est généralement appelé dans le code caché caché du contrôle utilisateur dérivé, par exemple:
Cependant, la méthode de la main du contrôle de la base de la base peut nécessiter des types de paramètres spécifiques:
<code class="language-csharp">private void SomeClick(object sender, RoutedEventArgs e) { HandleClick(sender); MyDataGrid.Items.Refresh(); }</code>
Si le DataConText dans le contrôle utilisateur dérivé est dérivé, tel que BaseViewModel & lt; En effet, DataConText ne peut pas être directement converti en BaseViewModel & lt;
<code class="language-csharp">public class BaseUserControl : UserControl { protected void HandleClick(object sender) { var vm = (BaseViewModel<零件>)DataContext; ... } }</code>
Pourquoi ne pouvons-nous pas convertir générique & lt;
Il est interdit de convertir générique & lt; Imaginez, convertit List & lt; Vous pouvez ensuite ajouter l'objet de mouton à la liste & lt; alternative
Afin de résoudre ce problème, la solution alternative suivante peut être prise en compte:
Utilisation d'interfaces au lieu de génériques pour définir le contrat que DataconText doit être implémenté.
en utilisant une interface collaborative ou onduleur pour lire de force uniquement les types génériques.
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!