2017-08-29 83 views
-1

我一直在使用WPF工作了很多,過了一段時間之後,MainWindow類變得雜亂無章。有沒有辦法將所有的控件事件存儲在像下面這樣的自定義類中?繼承不起作用,我猜測它是因爲它沒有新類的實例。定義控制事件的自定義路徑

public partial class MainWindow : Window 
{ 
    public class ControlEvents : MainWindow //Custom class 
    { 
     private void Abutton_Click(object sender, RoutedEventArgs e) 
     { 
      ...Stuff 
     } 
    } 
} 
+2

尋找MVVM方法,將事件控制器存儲爲ICommand並將它們放在任何你想要的地方 – kurakura88

+0

@ kurakura88說,MVVM就是你要找的東西。你沒有利用WPF的優勢。您使用WPF作爲Windows窗體。我知道很難將應用程序移動到WPF,但我認爲你不會後悔。 –

回答

1

有沒有來存儲所有的方法在下面的自定義類中的控件事件?

否,則事件處理程序本身必須其中元素被定義並且處理程序是掛接同一視圖類的代碼隱藏來定義。

您可以在事件處理程序移動代碼到另一個類,但是:

public partial class MainWindow : Window 
{ 
    private YourClass _handler = new YourObject(); 
    public class ControlEvents : MainWindow //Custom class 
    { 
     private void Abutton_Click(object sender, RoutedEventArgs e) 
     { 
      _handler.HandleButtonClick(e); 
     } 
    } 
} 

但你應該看看MVVM:https://msdn.microsoft.com/en-us/library/hh848246.aspx。這是爲什麼這是建議的設計模式用於開發基於XAML的UI應用程序的原因。

1

如果不使用MVVM:

您可以創建的控制區域的用戶控制和負載在主窗口中該用戶的控制。

另外 - 你可以把你的代碼「do stuff」給另一個類,並從事件函數中調用它。 例如:

functions.cs

dostuff1() 
{ 
    ... 
} 

dostuff2() 
{ 
    ... 
} 

您的用戶控件/ mainwindow.xaml.cs:

functions f = new functions(); 
    private void Abutton_Click(object sender, RoutedEventArgs e) 
    { 
     f.dostuff1(); 
    } 

好運

1

您可以將所有事件以分開的文件移動到Partial class。 調用文件MainWindowEvents.cs或其他東西。 (要記住它是什麼)