【问题标题】:Where to put code in (primarily) windowless WPF app?将代码放在(主要)无窗口 WPF 应用程序的哪里?
【发布时间】:2009-06-23 04:14:49
【问题描述】:

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

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

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

詹姆斯

【问题讨论】:

  • 多哈。应该做一些搜索。找到这篇文章(stackoverflow.com/questions/995195/…),应该可以让它做我需要的。对不起!
  • 这是一个好的开始,但还有更多 WPF 特定的东西。

标签: wpf windowless


【解决方案1】:

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

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

【讨论】:

  • 是的,我发现我在上面评论过的其他线程,我很确定我可以让它工作。无论如何,将其标记为答案。 :)
【解决方案2】:

听起来代码不属于那里,最多只是一个启动计时器的调用。 M-V-VM (Model - View - ViewModel) 模式听起来很适合您的问题。正如您所指出的,它也会“感觉”更正确,然后将逻辑附加到您的代码后面。使用 MVVM 你可以将你的稀疏 UI 分离到一个 View 中,你的代码可以分别存在于 Model 和 ViewModel 中。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2011-07-08
    相关资源
    最近更新 更多