5

インターネット上にこれに関する情報があることは知っていますが、それを私の状況に翻訳するのに問題があります.

xaml ウィンドウがあり、次のエラーが表示されます。

私のコードビハインドは次のとおりです。

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">

誰かアドバイスしてください:)

ここに私が見つけたものへのリンクがありますが、翻訳に苦労しています... 部分宣言は異なる基本クラスを指定してはなりません

もう少し調査を行った後、xaml の最上位要素を実装するようにコード ビハインドを変更すると、エラーが解消されることがわかりました。コードビハインド クラスは、私が設計したインターフェイスを実装する必要があるため、これは明らかにまだ問題です。

4

4 に答える 4

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

したがって、あなたの場合、グリッドを置き換える必要があると思います。つまり、次のようにします。

<namespace:GX3ClientPlugin x:Class="namespace.GX3OpenStackupGUIPlugin">
public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin

(GX3ClientPlugin は最終的に Grid や UserControl などから継承すると思いますか?)

于 2012-05-02T13:36:09.713 に答える
4

TabItemを継承しようとすると、このエラーが発生しました。.csは次のようになりました。

public partial class ucTabItemSelectionCriteria : TabItem

XAMLの最初の行は次のようになりました。

<UserControl 

これは、コードがXAMLから生成されたときに表示される不一致でした。XAMLの最初の2行を次のように変更すると修正されました。

    <controls:TabItem xmlns:controls= 
"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"

これで、両方がTabItemコントロールから継承されます。

于 2012-07-04T20:06:28.510 に答える
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ロジックの2つの懸念があるため、継承はこの問題に対処するための間違った方法だと思います。

于 2012-05-02T12:57:20.523 に答える
1

それに 2 つ (またはそれ以上) の部分がありpartial classます。検索すると、おそらくbase-type のようなものを指定している別のが見つかるはずです。 ファイルの一部だけを見ています。残りの半分は、おそらく xaml の下から展開する必要があります。class GX3OpenStackupGUIPluginControl

問題は、2 つのファイルが次のようなことを行っていることです。

(最初にファイルします)

public partial class GX3OpenStackupGUIPlugin : GX3ClientPlugin, IGX3PluginInterface {}

(ファイル 2 番目)

public partial class GX3OpenStackupGUIPlugin : SomethingElse {...}
于 2012-05-02T12:56:04.757 に答える