WPF错误消息:部分声明不能指定不同的基类

时间:2011-01-26 17:48:25

标签: wpf wpf-controls

为什么我有UserControl的错误消息:

  

部分声明   MyNamespace.MyUserControl一定不能   指定不同的基类

仅仅因为我继承自另一个名称空间我在另一个名称空间中创建,而另一个名称空间在XAML中被引用为

xmlns:my="clr-namespace:ReferedNamespace;assembly=ReferedNamespace"

3 个答案:

答案 0 :(得分:27)

很少继续这里,但这通常发生在后面的代码和xaml文件不从相同的基类继承。

由于我们没有关于您的问题的所有细节, 我将创建一个会导致抛出相同异常的情况, 这可能有助于您理解您的问题。

举个例子,只需使用Visual Studio创建新的WPF应用程序, XAML可能看起来像这样:

<Window x:Class="WpfApplication1.MainWindow" .....>

后面的代码将包含这样的内容:

public partial class MainWindow : Window
{
    //Code here
}

请注意这里的'partial'修饰符。这意味着这个类(MainWindow)可能 不是在单个文件中定义,而是分布在多个文件中, 在这种情况下,XAML(.xaml.cs)和CS(.cs)文件。

现在向解决方案添加一个新的UserControl。它将命名为UserControl1。

不对XAML进行任何更改,请更改MainWindow的代码:

public partial class MainWindow : UserControl1
{
    //Code here
}

现在你将得到你质疑的例外情况。

如果您仍无法找到解决方案,请在代码中查找类似的内容, 请提供更多代码。

答案 1 :(得分:17)

查看此部分的.cs和.xaml文件

    .liam文件中的
  • <Window x:Class="BUSsAsDesign.GUI.IGPopUP" > ...... </Window>
    
  • .cs文件中的
  • namespace BUSsAsDesign.GUI
    {
       public partial class IGPopUP : Window
      {
    
       //code here
    
      }
    }
    
  • 现在,如果您想将Window更改为UserControl

  • 更改

    <Window x:Class="BUSsAsDesign.GUI.IGPopUP" > ....... </Window>
    <!--**becomes**-->
    <UserControl x:Class="BUSsAsDesign.GUI.IGPopUP" > ....... </UserControl>
    

    namespace BUSsAsDesign.GUI
    {
      public partial class IGPopUP : Window
      {

       //code here

      }
    }
    //**becomes**
    namespace BUSsAsDesign.GUI
    {
      public partial class IGPopUP : UserControl
      {

       //code here

       } 
    }

- 我希望它有用:)。

答案 2 :(得分:1)

我想添加这条信息。在Visual Studio 2017中,有一个我没有时间深入挖掘的错误,但它会导致此错误。 (来自OP)

概述:将部分类声明为资源xaml文件的x:Class时,会导致此错误,并且在删除声明后,错误仍将存在。

要重现此错误,(或者如果您在此,因为您收到此错误消息)

第1步:创建新的WPF项目 第2步:创建新资源文件
步骤3:将资源文件名称空间更改为项目主命名空间(最后删除位。)
步骤4:在资源文件声明/标题部分中,添加一个x:Class声明,指定MainWindow(默认启动窗口对象)作为该资源文件的Class。 (EG:x:Class = MainWindow)
第5步:清洁/重建解决方案
第6步:您现在应该从OP获得此错误。因此,从资源文件的标题中删除x:Class声明,然后保存/清理/重建项目。

如果错误被重现,即使您从资源文件中删除了x:Class声明,错误也应该保留。

我可以找到针对此错误的唯一解决方案是删除项目 Bin 文件夹,以及包含内置版本的任何其他文件夹。

删除它们后,清理/重建项目,错误应该消失。