ジェネリック クラスから継承する UserControl を作成しようとしています。ジェネリック クラスから直接継承するのではなく、ジェネリックを使用しない中間クラスを介して継承します。これは実行時にコンパイルおよび動作しますが、設計時にエラーが発生します。
ここに私の一般的な親クラスがあります:
Public Class GenericParent(Of T)
Inherits UserControl
End Class
これが私の非ジェネリック親クラスです。
Public Class NonGenericParent
Inherits GenericParent(Of String)
End Class
ここに私のXAMLがあります:
<local:NonGenericParent x:Class="SilverlightApplication5.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SilverlightApplication5"
Width="400" Height="300">
<StackPanel>
<Button Content="Hello"/>
</StackPanel>
</local:NonGenericParent>
IntelliSense パーサーは、次のエラーを返します。
- プロパティ「Width」がタイプ「NonGenericParent」に見つかりませんでした。
- プロパティ「高さ」がタイプ「NonGenericParent」に見つかりませんでした。
- タイプ 'NonGenericParent' は直接コンテンツをサポートしていません。
これは、IntelliSense が GenericParent クラスを超える継承ツリーを参照できないかのようです。SilverlightApplication5.Page クラス、NonGenericParent クラスで ContentPropertyAttribute を直接指定しようとしましたが、機能しません。
TypeArguments 属性が Silverlight 2.0 でサポートされていないことを読みました。そのため、中間の NonGenericParent クラスを作成しました。
これらのエラーを黙らせる方法を誰かが知っているなら、ぜひ聞いてみたいと思います。
更新: MSFT でサポート チケットをオープンしました。解決策が何であれ、これを更新します。