2010-12-10 7 views
4

私は、UserControlから継承し、抽象メソッドを持つ抽象クラスを作成しました。私はこの抽象クラスを実装するいくつかのコントロールを持っています。 Silverlightコントロールは正常に動作しますが、XAMLエディタでInstanceBuilderExceptionがスローされ、XAMLプレビューを表示できなくなります。これを回避する方法はありますか、私はちょうど何か間違っていますか?ありがとう!カスタムクラスから継承するときのSilverlight Xaml Editorエラー

抽象クラスは非常に単純です:

public abstract class Widget : UserControl 
{ 
    public abstract void Close(); 
} 

実装はここにある:

public partial class OnlineUserWidget : Widget 
{ 
..... 
} 

とXAML

<local:Widget x:Class="Prototype.Widgets.OnlineUserWidget" 
    xmlns:local="clr-namespace:Prototype.Widgets" 
.... 

</local:Widget> 

最後のエラー:

は作成できませんインスタントウィジェット " Microsoft.Expression.DesignModelでMicrosoft.Expression.DesignModel.InstanceBuilders.ClrObjectInstanceBuilder.InstantiateTargetType(IInstanceBuilderContextコンテキスト、ViewNode viewNode)でMicrosoft.Expression.DesignModel.Core.InstanceBuilderOperations.InstantiateType(タイプタイプ、ブールsupportInternal、ブールsupportProtected)で Microsoft.Expression.Platform.Silverlight.InstanceBuilders.FrameworkElementInstanceBuilder.Instantiateで.InstanceBuilders.ClrObjectInstanceBuilder.Instantiate(IInstanceBuilderContextコンテキスト、viewNode viewNode)Microsoft.Expression.Platform.Silverlight.InstanceBuilders.DependencyObjectInstanceBuilder.Instantiate(IInstanceBuilderContextコンテキスト、viewNode viewNode)で (IInstanceBuilderContextコンテキスト、ViewNode viewNode) at Microsoft.Expression.Platform.Silverlight.Instance Microsoft.Expression.DesignModel.Core.ViewNodeManager.Instantiate(ViewNode viewNode)でMS.Internal.Services.DesignModeValueProviderService.DesignModeValueProviderBuilder.Instantiate(IInstanceBuilderContextコンテキスト、ViewNode viewNode) でBuilders.UserControlInstanceBuilder.Instantiate(IInstanceBuilderContextコンテキスト、ViewNode viewNode)

答えて

1

UserControlは、このような状況で使用する間違ったクラスです。あなたはおそらくコントロールを見たいでしょう。

this.DefaultStyleKey=typeof(Widget); 

は、それからちょうどあなたがウィジェットに割り当てられたスタイルを持っていることを確認すると、あなたはとローランのロッキンすることがあります:あなたのスタイルが正しくロードされることを確認するには、コントロールのctorに次の行を使用します。 UserControlsは、コントロールを再テンプレートする必要がない、またはコントロールを継承する必要のない、1回限りの状況に最適です。

+0

ああ、私はコントロールコントロール(hah)について気づいていませんでした。スタイル/コントロールテンプレートでそれを使用しようとします、ありがとう! – codechinchilla

関連する問題