我应该如何与WPF主窗口关联;“主回路”;具有应用逻辑';s";“主回路”;

我应该如何与WPF主窗口关联;“主回路”;具有应用逻辑';s";“主回路”;,wpf,visual-studio,window,mvp,Wpf,Visual Studio,Window,Mvp,当我们在Visual Studio(2010)中创建WPF项目时,它会自动创建一个MainWindow.xaml,它的代码包含一个MainWindow类,其中包含一个InitializeComponent()。我表面上知道,在项目文件的某个地方,有一个实际的main()函数等效于演示文稿,因此当加载应用程序GUI时,GUI事件会“向下”处理应用程序层,只要它们存在 我计划在Model View Presenter应用程序中开发一些东西,我已经在模仿非常基本的领域逻辑和应用程序外观 我的疑问是:当

当我们在Visual Studio(2010)中创建WPF项目时,它会自动创建一个MainWindow.xaml,它的代码包含一个MainWindow类,其中包含一个
InitializeComponent()
。我表面上知道,在项目文件的某个地方,有一个实际的
main()
函数等效于演示文稿,因此当加载应用程序GUI时,GUI事件会“向下”处理应用程序层,只要它们存在

我计划在Model View Presenter应用程序中开发一些东西,我已经在模仿非常基本的领域逻辑和应用程序外观

我的疑问是:当我拥有我的域逻辑时,我应该如何将演示者与应用程序外观连接起来,或者更实际地说,我应该在哪里以及如何(在项目文件中)开始从VisualStudio中创建的空白WPF应用程序“充实”应用程序。我做了一些类似于添加现有项目的东西,但并没有过时

(编辑:来自a:“应用程序外观是以域模型中的特定对象作为主题打开的。该主题充当外观所做的所有操作的起点。”这似乎是启动的应用程序的良好开端…)

有什么共同的、明显的或最佳实践的方法吗

(另外,如果有人能为这个问题建议/编辑一个更好的标题,我将不胜感激)

谢谢你的帮助

这本来自微软的指南(虽然有点旧)很好地解释了富Gui应用程序的层和部分:


如何实际构建项目和文件实际上取决于您。您可以在一个项目中构建独立的应用程序。您将无法很容易地重用该代码,但您的WPF应用程序不会注意到

您可以用多种方式对类进行分组。按名称空间、程序集(项目)、嵌套类等。。。何时使用通常取决于在不同机器上重复使用或分配

当您构建UI部件和webservice部件时,可能会将它们分别放在不同的项目中

当你想在一个网站、一个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>
一种更好、更面向对象和单元可测试的方法是使用或。这些框架的范围如此之大,以至于它们都有自己的主题


我不知道你为什么想要一个主回路。除非你打算做一些游戏或3d渲染。在其他情况下,您可以通过向可见对象添加命令并让Windows处理事件的主要输入注册和分派来满足需要。对于长时间运行的任务,您可以使用线程在后台完成()。

这本来自Microsoft的指南(虽然有点旧)非常好地解释了富Gui应用程序的层和部分:@jessehouwing感谢您的链接,实际上我已经读过了,但是,尽管它极大地解释了如何以几乎与实现无关的方式设计应用程序(我相信我可以在Python或Java中使用这些建议),但我看不到如何实际构建代码,特别是在Visual Studio中创建空白WPF项目后从何处开始构建架构,我应该创建哪个文件/文件夹/项目结构,等等。再次感谢您的关注,但问题的核心(主循环、逻辑非专业化、入口点)似乎仍然没有得到我的回答…:(那很有趣!我想现在我有我预期的家庭作业要做。特别是像OnStartup这样的事件。当我说“domain logic Main Loop”时,我可能应该说“domain logic initialization”,您称之为可见对象。我想富客户端确实应该有一个GUI本机mainloop来实际控制GUI事件,而线程是我知道在某个时候必须攻击的东西。感谢您的关注和时间!
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{

    private void Application_Startup(object sender, StartupEventArgs e)
    {

    }
}