2014-04-26 75 views
3

我有一個基類(WPF窗口)的設計(xaml)和代碼。繼承WPF窗口

我想繼承這個類,不是爲了修改這個窗口的設計,而只是爲了修改代碼。

例如,我有一個登錄窗口,它是我的基類,它具有用於用戶名的文本框,用於密碼和登錄按鈕的文本框。

此外,它具有處理登錄的代碼。

現在,我想要實現這個對話框的2基類:

  1. 身份驗證對錶X.

  2. 身份驗證對錶Y.

我認爲我可以如下設計我的基礎對話框:

... BaseLoginWnd : Window 
{ 
    ... 
    void Login_Click(...) // This method is implemented as a Template Method (Design pattern) 
    { 
     ... 
     if (Authenticate()) 
     { 
      MessageBox.Show("Success"); 
     } 
     else 
     { 
      MessageBox.Show("Failure"); 
     } 
     ... 
    } 

    abstract bool Authenticate(); 
} 

我會提到,我知道這不是這個特定示例的最佳設計(最好創建一個執行登錄的單獨類),但這僅僅是一個示例。

所以我的問題是 - 我怎樣才能從窗口繼承,使用基類的設計?

+0

你有什麼嘗試?你見過[這個問題](http://stackoverflow.com/questions/11140000/creating-an-abstract-base-class-for-windows-in-wpf)? –

+2

用戶界面不是認證相關代碼的適當位置。從後面的代碼中刪除所有內容,並創建一個適當的ViewModel和服務層,並將其所有責任放在它所屬的位置。您不需要爲此分類任何UI元素,因爲UI與您在此處所做的操作無關。 –

回答

0

不可能繼承同時具有XAML和代碼的窗口/控件類。將整個文本框/按鈕創建邏輯放在代碼後面,並刪除XAML文件,然後您將能夠繼承該類。