当前位置 : 主页 > 手机开发 > 其它 >

从自定义类继承时Silverlight Xaml Editor错误

来源:互联网 收集:自由互联 发布时间:2021-06-19
我创建了一个继承自UserControl的抽象类,并且有一个抽象方法.我有几个控件实现这个抽象类. Silverlight控件运行正常,但在XAML编辑器中,我抛出了InstanceBuilderException,因此它不会让我查看XAM
我创建了一个继承自UserControl的抽象类,并且有一个抽象方法.我有几个控件实现这个抽象类. Silverlight控件运行正常,但在XAML编辑器中,我抛出了InstanceBuilderException,因此它不会让我查看XAML预览.有没有办法绕过这个,或者我只是做错了什么?谢谢!

抽象类非常简单:

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>

最后错误:

无法创建“Widget”的实例.
   在Microsoft.Expression.DesignModel.Core.InstanceBuilderOperations.InstantiateType(Type type,Boolean supportInternal,Boolean supportProtected)
   在Microsoft.Expression.DesignModel.InstanceBuilders.ClrObjectInstanceBuilder.InstantiateTargetType(IInstanceBuilderContext context,ViewNode viewNode)
   在Microsoft.Expression.DesignModel.InstanceBuilders.ClrObjectInstanceBuilder.Instantiate(IInstanceBuilderContext context,ViewNode viewNode)
   在Microsoft.Expression.Platform.Silverlight.InstanceBuilders.DependencyObjectInstanceBuilder.Instantiate(IInstanceBuilderContext context,ViewNode viewNode)
   在Microsoft.Expression.Platform.Silverlight.InstanceBuilders.FrameworkElementInstanceBuilder.Instantiate(IInstanceBuilderContext context,ViewNode viewNode)
   在Microsoft.Expression.Platform.Silverlight.InstanceBuilders.UserControlInstanceBuilder.Instantiate(IInstanceBuilderContext context,ViewNode viewNode)
   在MS.Internal.Services.DesignModeValueProviderService.DesignModeValueProviderBuilder.Instantiate(IInstanceBuilderContext context,ViewNode viewNode)
   在Microsoft.Expression.DesignModel.Core.ViewNodeManager.Instantiate(ViewNode viewNode)

UserControl是在这种情况下使用的错误类.你可能想看看控制.要确保正确加载样式,请在控件ctor中使用以下行:

this.DefaultStyleKey=typeof(Widget);

然后确保你有一个分配给小部件的样式,你就会摇滚和罗林. UserControl最适用于一次性情况,您无需重新模板控件或从中继承控件.

网友评论