WPF错误消息:部分声明不能指定不同的基类
为什么我有UserControl的此错误消息: 部分申报 MyNamespace.MyUserControl不能 指定不同的基类 因为我从另一个命名空间中创建的另一个UserControl类继承,而这个另一个命名空间在XAML中被引用为WPF错误消息:部分声明不能指定不同的基类,wpf,wpf-controls,Wpf,Wpf Controls,为什么我有UserControl的此错误消息: 部分申报 MyNamespace.MyUserControl不能 指定不同的基类 因为我从另一个命名空间中创建的另一个UserControl类继承,而这个另一个命名空间在XAML中被引用为 xmlns:my="clr-namespace:ReferedNamespace;assembly=ReferedNamespace" 这里没有什么要说的,但是当代码隐藏和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
?+1非常感谢,这实际上为问题提供了解决方案!Window
<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 } }