我知道在互联网上有关于此的信息,但我在将其翻译成我的情况时遇到了问题。
我有一个xaml窗口,我得到错误:'GX3OpenStackupGUIPlugin.GX3OpenStackupGUIPlugin'的部分声明不能指定不同的基类
我的代码背后是:
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin, IGX3PluginInterface
{
我的xaml是:
<Grid xmlns:my="clr-namespace:CustomControls;assembly=MultiComboBox" xmlns:extToolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit/extended" x:Class="GX3OpenStackupGUIPlugin.GX3OpenStackupGUIPlugin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
请有人建议:)
这是我找到的链接,但我正在努力翻译...... Partial declarations must not specify different base classes
在做了一点研究之后,我发现如果我改变我的代码后面来实现我的xaml中的顶级元素,它就会摆脱错误。这显然仍然是一个问题,因为我的代码隐藏类需要实现我设计的接口。
答案 0 :(得分:8)
您链接的问题包含答案。问这个问题的人开始于此(有效):
<A x:Class="B">
public partial class B : A
然后他们把它改成了(这没用):
<A x:Class="C">
public partial class C : B
这不起作用,因为在幕后,基于包含从A继承的部分类的XAML生成.cs文件。要修复它,他们需要将其更改为:
<B x:Class="C">
public partial class C : B
所以在你的情况下,我相信你应该替换Grid,即做这样的事情:
<namespace:GX3ClientPlugin x:Class="namespace.GX3OpenStackupGUIPlugin">
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin
(我假设GX3ClientPlugin最终继承自Grid或UserControl之类的东西?)
答案 1 :(得分:4)
当我尝试继承TabItem时出现此错误。 .cs看起来像:
public partial class ucTabItemSelectionCriteria : TabItem
XAML的第一行看起来像:
<UserControl
这是从XAML生成代码时出现的不匹配。当我将XAML的前两行更改为:
时,它已得到修复 <controls:TabItem xmlns:controls=
"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
现在两者都是从TabItem控件继承的。
答案 2 :(得分:2)
部分类声明意味着您可以在2个不同的文件中指定同一个类的代码:
<强> AOther.cs 强>
public partial class A
{}
<强> A.cs 强>
public partial class A
{}
这个错误告诉你这些类定义了不同的基础。
<强> AOther.cs 强>
public partial class A : B
{}
<强> A.cs 强>
public partial class A : X
{}
在示例中,A不能从B和X继承不同的文件。我认为可以在XAML中指定继承链,但我在发布的代码中看不到任何这样做。
<强>更新强>
随着评论中对问题的修改,我建议如下。而不是查看继承以使您的控件/窗口继承自GX3ClientPlugin,您应该查看组合。基本上这意味着,在表单上放置一个GX3ClientPlugin实例并调用它。如果需要为GX3ClientPlugin类编写一个接口,请使表单实现它,但是对于每个方法,只需调用它所在的实例。我认为继承是解决这个问题的错误方法,因为你的类有两个问题 - UI和GX3ClientPlugin逻辑。
答案 3 :(得分:1)
partial class
会有两个(或更多)部分。如果您搜索,则应找到另一个 class GX3OpenStackupGUIPlugin
,这可能会指定类似Control
的基本类型。您只查看文件的一部分。另一半可能需要从xaml下扩展。
问题是两个文件正在做这样的事情:
(提交第一个文件)
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin, IGX3PluginInterface {}
(提交第二个文件)
public partial class GX3OpenStackupGUIPlugin : SomethingElse {...}