none
WPF使用者控制項如何實作共用的方法 RRS feed

  • 問題

  • 有一個專案,但是有很多使用者控制項都有共用的方法

    請問該如何實作?

    因為使用者控制項去繼承抽象類別,編譯器就會出現:不能有多重基底類別


    以下的程式碼如果再WinForm是可以過的,但在WPF就會跳出不能有多重基底類別的錯誤訊息

    public partial class UserControlDemo : AbsClass
        {
            public UserControl1()
            {
                InitializeComponent();
                Method();
            }
        }
    
        public abstract class AbsClass : UserControl
        {
            public void Method() { }
        }

    2014年4月18日 下午 07:28

解答

  • 1. 您的建構函式寫錯了, 應為

    public partial class UserControl1: AbsClass
       
    {
           
    public UserControl1()
           
    {
               
    InitializeComponent();
               
    Method();
           
    }
       
    }

    2. 請修改UserControl1.xaml, 改成:

    <local:Abs
        xmlns:local="clr-namespace:專案的名稱空間"

        原有的內容

    </local:Abs>

    就可以成功了

    • 已標示為解答 Wesley Hsu 2014年4月19日 下午 05:30
    2014年4月19日 上午 05:32

所有回覆

  • 改用介面來定義共用方法,再於 UserControl 裡實作。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2014年4月19日 上午 01:17
    版主
  • 有一個專案,但是有很多使用者控制項都有共用的方法

    請問該如何實作?

    因為使用者控制項去繼承抽象類別,編譯器就會出現:不能有多重基底類別


    以下的程式碼如果再WinForm是可以過的,但在WPF就會跳出不能有多重基底類別的錯誤訊息

    public partial class UserControlDemo : AbsClass
        {
            public UserControl1()
            {
                InitializeComponent();
                Method();
            }
        }
    
        public abstract class AbsClass : UserControl
        {
            public void Method() { }
        }

    為什麼 UserControlDemo 的建構式是 UserControl1 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年4月19日 上午 01:52
    版主
  • 1. 您的建構函式寫錯了, 應為

    public partial class UserControl1: AbsClass
       
    {
           
    public UserControl1()
           
    {
               
    InitializeComponent();
               
    Method();
           
    }
       
    }

    2. 請修改UserControl1.xaml, 改成:

    <local:Abs
        xmlns:local="clr-namespace:專案的名稱空間"

        原有的內容

    </local:Abs>

    就可以成功了

    • 已標示為解答 Wesley Hsu 2014年4月19日 下午 05:30
    2014年4月19日 上午 05:32
  • 改用介面來定義共用方法,再於 UserControl 裡實作。

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    介面應該是要各自實作不同的結果,我現在的需求,會產生一堆重複程式碼
    2014年4月19日 下午 05:32