例を見てみましょう:
基本クラスのusercontrol:
<code class="language-csharp">private void SomeClick(object sender, RoutedEventArgs e) { HandleClick(sender); MyDataGrid.Items.Refresh(); }</code>
UserControlsのDataContextタイプはbaseViewModel
またはbaseViewModel<code class="language-csharp">public class BaseUserControl : UserControl { protected void HandleClick(object sender) { var vm = (BaseViewModel<Part>)DataContext; ... } }</code>
generic&gtに変換されます。次の例を考えてみましょう:
この変換が許可されている場合、羊が動物に追加され、実際にそれをオオカミに追加することが許可されているため、タイプは一致しません。 solution
この問題を解決するために、インターフェイスのコラボレーションまたはインバーターは、必要なタイプのみを読み取ることを余儀なくされます。ただし、この方法は、参照したクラスが必要なインターフェイスを達成した場合にのみ実行可能です。 これには、たとえば、インターフェイスを使用してDataContextのタイプを定義し、共同特性または逆の特性を使用する必要があります。 特定の実装は、の定義と実際のニーズに依存します。
以上がWPF usercontrolsでジェネリックに安全にジェネリックをキャストする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。