在(主要)无窗口WPF应用程序中放置代码的位置?

时间:2009-06-22 20:04:07

标签: wpf windowless

所以我打算编写一个主要是无窗口应用程序的应用程序。将有用于用户交互的窗口,但仅在用户请求时。否则,应用程序位于系统托盘中并运行计时器,每分钟左右执行一些逻辑。我的问题是:据我所知,我会将所有相关逻辑放在App.xaml.cs中(启动计时器,在每个时间间隔执行逻辑),但由于某种原因,这对我来说似乎不对。

该应用程序将有一个系统托盘图标,用户可以与之交互以获取详细信息,调整设置等,但除此之外,应用程序只是坐在那里并完成它的工作。将所有代码放在App.xaml类的代码隐藏中是否合适?我不知道为什么,但似乎我不应该,而且应该有其他地方,但我真的不能想到任何事情。

我以前从未写过这样的应用程序,因此我的无知。任何建议将不胜感激。感谢。

詹姆斯

2 个答案:

答案 0 :(得分:2)

即使应用程序通过Windows完成大多数交互,将代码中的所有代码放在后面通常也是一个坏主意。交互通常是在后面的代码中启动了事件处理程序,但是您可以将代码放在自己创建的类中。

对于大多数时间未显示用户界面的应用程序也是如此。大多数操作将从App.xaml.cs启动,但这并不意味着所有代码都必须存在。您可以将计时器封装在自己的类中,例如,可以启动其他代码来执行工作。按照职责划分你的代码,窗口类做UI的东西,域逻辑进入其他文件等。这将使你能够创建更多可维护的应用程序。

答案 1 :(得分:1)

它听起来不像代码那里,最多只是一个启动定时器的调用。 听起来非常适合您的问题的是M-V-VM(模型 - 视图 - ViewModel)模式。正如您所指出的那样,它也会“感觉”更正确,然后将逻辑附加到您的代码背后。使用MVVM,您可以将稀疏UI分离为View,并且您的代码可以单独存在于Model和ViewModel中。

我建议使用toolkit here,因为它还包含很好的概述文档以及您在创建自己的解决方案时可以消化的示例。 Laurent Bugnion还发布了一个可用于入门的MVVM入门工具包。

此外,here是让您开始在系统托盘中实际设置控件的一些好东西。