使用Visual Studio设计器时继承UserControl基类时出错

时间:2017-02-26 17:44:01

标签: c# wpf visual-studio inheritance user-controls

那么标题应该能够很好地解释问题。考虑我创建一个新的UserControl,但是在我的应用程序中,许多元素共享一个公共代码,它们是用户控件的“子组”的一部分。

合乎逻辑的是在生成的CustomUserControlUserControl之间“注入”一个类;

类似于:

public abstract class CommonCustomControl : UserControl 
{ 
    public CommonCustomControl(int v, string other) {
    }
}
public partial class CustomUserControl : CommonCustomControl
{ 
    CustomUserControl(int v, string other) : base(v, other) {
    }
}

现在问题是,这个类只是由visual studio“部分”生成的。因此,更改生成的CustomUserControl类会产生错误:
  “基类与其他部分声明的不同”

如何防止此错误?虽然仍然能够在visual studio的gui设计师中实际设计我的用户控件元素?

我已经尝试过this question提供的答案。但它似乎根本不起作用。 (也许因为那谈到了winforms而不是WPF版本)

[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<InterfaceHandler, UserControl>))]
public abstract class CommonCustomControl : UserControl
{
    private readonly int _v;
    private readonly string _other;

    public CommonCustomControl(int v, string other) {
        _v = v;
        _other = other;
    }
}

public partial class CustomUserControl : CommonCustomControl
{
    public CustomUserControl(int v, string other) : base(v, other) {
    }
}

出了什么问题?

1 个答案:

答案 0 :(得分:0)

你只能在这里查看你的C#代码,但我会对这可能是什么进行解释。

您声明从基类继承的UserControlUserControl也是partial class

部分类通常意味着在其他地方有其他代码。

该错误表明两个部分类之间的基类不同。

如果你没有自己的第二个partial class UserControl(即它不仅仅是一个类,而是一个实际的用户控件),那么我假设定义的其余部分将在XAML

取决于您实施控件的方式:

你可能有这个:

<UserControl x:Class="NamespaceHere.CustomUserControl"> ... </UserControl>

它应该是这样的:

<CommonCustomControl x:Class="NamespaceHere.CustomUserControl"> ... </CommonCustomControl>

如果没有,你能展示你的XAML吗?