定义控件事件的自定义路径

时间:2017-08-29 00:35:35

标签: c# wpf events

我在WPF上工作了很多,过了一会儿,MainWindow课程变得杂乱无序。有没有办法将所有控件事件存储在自定义类中,如下所示?继承不起作用,我猜它,因为它没有新类的实例。

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

3 个答案:

答案 0 :(得分:0)

如果您不使用mvvm:

您可以为控件区域创建用户控件,并在主窗口中加载此用户控件。

此外 - 您可以将“do stuff”的代码带到另一个类并从事件函数中调用它。 例如:

functions.cs

dostuff1()
{ 
  ...
}

dostuff2()
{ 
  ...
}

your usercontrol / mainwindow.xaml.cs:

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

答案 1 :(得分:0)

  

有没有办法将所有控件事件存储在自定义类中,如下所示?

不,事件处理程序本身必须在定义元素并连接处理程序的同一视图类的代码隐藏中定义。

您可以将事件处理程序中的代码移动到另一个类中,但是:

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应用程序的设计模式的原因。

答案 2 :(得分:0)

您可以将所有事件移至分隔文件中的Partial class。  调用文件MainWindowEvents.cs或其他东西。 (记住它是什么)