从自定义类继承时,Silverlight Xaml编辑器出现错误

4
我已经创建了一个继承自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) 处发生错误。

1个回答

1
UserControl在这种情况下不是正确的类。你可能想要查看control类。为了确保你的样式能够正确加载,请在控件的构造函数中使用以下代码行:
this.DefaultStyleKey=typeof(Widget);

然后只需确保为小部件分配了样式,您就可以毫不费力地使用它了。如果您不需要重新模板化控件或从中继承,UserControls最适用于一次性情况。


啊,太棒了,我没意识到 Control 控件(哈哈)。会尝试使用它与样式/控件模板,谢谢! - codechinchilla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接