Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF错误消息:部分声明不能指定不同的基类_Wpf_Wpf Controls - Fatal编程技术网

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

WPF错误消息:部分声明不能指定不同的基类,wpf,wpf-controls,Wpf,Wpf Controls,为什么我有UserControl的此错误消息: 部分申报 MyNamespace.MyUserControl不能 指定不同的基类 因为我从另一个命名空间中创建的另一个UserControl类继承,而这个另一个命名空间在XAML中被引用为 xmlns:my="clr-namespace:ReferedNamespace;assembly=ReferedNamespace" 这里没有什么要说的,但是当代码隐藏和xaml文件不是从同一个基类继承时,通常会发生这种情况 因为我们没有关于你问题的所有细节

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

部分申报 MyNamespace.MyUserControl不能 指定不同的基类

因为我从另一个命名空间中创建的另一个UserControl类继承,而这个另一个命名空间在XAML中被引用为

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

这里没有什么要说的,但是当代码隐藏和xaml文件不是从同一个基类继承时,通常会发生这种情况

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

例如,只需使用Visual Studio创建新的WPF应用程序, XAML可能如下所示:

<Window x:Class="WpfApplication1.MainWindow" .....>
public partial class MainWindow : Window
{
    //Code here
}
注意这里的“部分”修饰符。这意味着该类(主窗口)可能 不能在单个文件中定义,而是分布在多个文件中, 在本例中,是XAML(.XAML.cs)和cs(.cs)文件

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

在不更改XAML的情况下,更改主窗口的代码:

public partial class MainWindow : UserControl1
{
    //Code here
}
现在,您将得到您所质疑的例外情况

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

请查看本部分中的.cs和.xaml文件

  • 在.xaml文件中:

    <Window x:Class="BUSsAsDesign.GUI.IGPopUP" > ...... </Window>
    
  • 现在如果你想把窗口改成用户控件

  • 改变

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

    -我希望它有用:)

    我想添加这条信息。在Visual Studio 2017中,有一个bug我没有时间深入研究,但它导致了这个错误。(摘自OP)

    概述:将部分类声明为资源xaml文件的x:class时,将导致此错误,删除声明后,此错误将持续存在

    复制此错误(或者如果您在这里是因为收到此错误消息)

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

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

    对于这个bug,我能找到的唯一解决方案是删除项目Bin文件夹,以及任何其他包含内部版本的文件夹。


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

    能否发布更多xaml和调用声明请注意,
    程序集
    之间没有空格您好,谢谢,这确实与继承有关。我已经解决了这个问题。我们如何告诉xaml使用
    UserControl1
    而不是
    Window
    ?+1非常感谢,这实际上为问题提供了解决方案!
    <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
    
           } 
        }