2017-08-29 78 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或其他东西。 (要记住它是什么)