Microsoft 的本指南(虽然有点旧)很好地解释了 Rich Gui 应用程序的层和部分:http: //msdn.microsoft.com/en-us/library/ee658087.aspx
您实际上如何构建项目和文件完全取决于您。您可以在一个项目中构建一个独立的应用程序。您将无法很容易地重用该代码,但您的 WPF 应用程序不会注意到。
您可以通过多种方式对课程进行分组。按命名空间,按程序集(项目),嵌套类等...何时使用通常取决于重用或分布在不同的机器上。
当您构建一个 UI 部件和一个 Web 服务部件时,您可能会将它们分别放在不同的项目中。
当您想在网站、Windows 应用程序和手机应用程序中重复使用您的业务课程时,您可能希望将它们分别放在不同的项目中。
分离成项目可以防止您在类之间创建循环依赖关系。
通常,您会从 UI 中获得一系列项目,这些项目引用了引用数据层的业务层等。而且您经常会看到一些交叉关注点(例如日志记录和安全性),它们是来自这些“层”中的每一个的引用'。
最后,层可以映射到项目(程序集)或命名空间(项目内)。你选择哪一个取决于你。
在 WPF 项目中,应用程序入口点由 App.Xaml 指定。您会在其中找到对要加载的主表单的引用。
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"> <-- Start up here -->
<Application.Resources>
</Application.Resources>
</Application>
实际的入口点在您的项目设置中定义:
您可以启动 App.xaml.cs 中的任何初始化代码。最简单的方法是通过订阅OnStart
事件或OnLoadCompleted
事件。您还可以在 MainWindow.xaml.cs 代码中启动您的逻辑。将实际逻辑放在一个单独的类中,并从您的 OnStart 或 OnLoadCompleted 事件中引用它。
并在那里添加您自己的代码
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
}
}
一种更好、更面向对象且可单元测试的方法是使用Prism或MVVM Light。这些框架的范围是如此之大,以至于它们保证了自己的主题。
我不确定你为什么想要一个主循环。除非你打算做某种游戏或 3D 渲染。在其他情况下,您可以通过向可见对象添加命令并让 Windows 处理主要输入注册和事件分派就足够了。对于长时间运行的任务,您可以使用线程在后台完成(再次不同的主题)。