none
WPFの開発について RRS feed

  • 質問

  •  

    VS2008のWPFを使用して開発を行っています

    Windowsのフォームのように継承を行いたいのですが下記のような

    エラーがでてしまいます

     

    Partial Public Class Window1


        Protected Overridable Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
            Me.Button1.Content = "123"
        End Sub

    End Class

     

    Partial Public Class Window2
        Inherits WpfApplication2.Window1

     

    End Class

     

    *エラー

    クラス 'Window2' に指定された基本クラス 'System.Windows.Window' は、その他の partial 型の 1 つである基本クラス 'Window1' と異なることはできません。

     

    どのうようにすれば継承が行なえるのか教えていただけると助かります

    2008年5月12日 1:31

すべての返信

  • らいむさん、こんにちは。

     

     らいむ さんからの引用
    *エラー

    クラス 'Window2' に指定された基本クラス 'System.Windows.Window' は、その他の partial 型の 1 つである基本クラス 'Window1' と異なることはできません。

     

    おそらく Partial クラス側に別の継承が入っているのでしょう。

    Partial クラス (同じクラスが分割されて別ファイルになっているクラス) の Inherits を確認してください。

    2008年5月12日 12:26
  • 親クラス Window1 は、 Window の継承が書いてない partial クラスであることからすると、 XAML 定義も持っていますね?
    そして、 子クラス Window2 も partial クラスで、 エラーメッセージの 「クラス 'Window2' に指定された基本クラス 'System.Windows.Window' 」 を合わせて考えると、 やはり XAML 定義を持っていますね?

     

    現状、 クラスの継承関係の中で XAML の画面定義を持てるのは唯一つだけです。

    XAML 定義は、 Window1 か Window2 のどちらかだけにしてください。

     

     

    ※ これが仕様なのかどうなのか、 MS のドキュメントに見つけられません。
    connect には、 「これはバグだろう?」 として上がってますが、 なにやら放置されたままみたいです。
    FeedbackID=289715
    https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=289715

    > WPF (XAML) Visual Inheritance

    2008年5月13日 1:47
  • Window2.xamlから生成されるWidow2.g.vb内でWindow2がSystem.Windows.Windowから継承されると書かれているにもかかわらず、Window2をWindow1から継承させようとしているからです。根本的な解決策は私もわからないのですが、biacさんが言われるようにWindow2を単なるクラスとして作成すればうまくいくと思います。

     

    2008年5月13日 4:20
    モデレータ