1

私はWindowsPhone8アプリを開発しています。特定のユーザーコントロールから継承するいくつかのユーザーコントロールが必要です。親ユーザーコントロールを次のように定義します。

パブリック抽象クラスWidgetsUserControl:UserControl {

}

そして子供は好きです:

パブリック部分クラスchildControl:WidgetsUserControl {

}

しかし、抽象の定義でエラーが発生します。「タイプ'project1.WidgetsUserControl'の宣言に部分修飾子がありません。このタイプの別の部分宣言が存在します」

私は何が間違っているのですか?

4

2 に答える 2

2

WidgetsUserControl クラスの定義に「partial」キーワードがないことを訴えています。おそらく、そのクラスを部分的に定義している WidgetsUserControl に対応する XAML ファイルがあるため、ここでは、それも部分的に定義されていることを指定する必要があります。

public abstract partial class WidgetsUserControl : UserControl

この方向に進む場合は、childControl の定義も一貫させる必要があることに注意してください。つまり、コードでは次のようになります。

public partial class childControl : WidgetsUserControl

XAML では、childControl が単純な UserControl ではなく、WidgetsUserControl であることも指定する必要があります。

<project1:WidgetsUserControl>
</project1:WidgetsUserControl>

これは機能しますが、Visual Studio Designer が WidgetsUserControl のインスタンスを作成できない (抽象的であるため) と文句を言うという問題が発生します。これにより、childControl の視覚化と編集が少し難しくなります。これを解決するには、基本 WidgetsUserControl の「抽象」をなくすことをお勧めします。基本クラスを抽象化することが本当に必要な場合は、ここで他の提案を参照してください。

デザイナーの抽象クラス

于 2013-02-06T17:42:03.313 に答える
1
This works good:
Code behind for parent user control:

    public abstract partial class WidgetsUserControl : UserControl {
        ...
        }

xaml for parent class:    
    <UserControl 
           ...
            xmlns:we="clr-namespace:project1"
            ...>

    </UserControl>

code behind for child user control:
    public partial class childControl : WidgetsUserControl {
    ...
    }

xaml for child user control:
    <we:WidgetsUserControl x:Class="project1.childControl"
       ...
        xmlns:we="clr-namespace:project1"
       ...>    
        <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}"></Grid>
    </we:WidgetsUserControl>
于 2013-02-08T11:43:05.590 に答える