c# - WPF 应用程序如何知道从哪里开始?

标签 c# wpf visual-studio-2008

我对整个 C#/WPF 都是全新的。我对 WPF 分层的概念有很好的理解,它是一个非常好的工具。然而,我遇到的是 VS 等试图让底层代码变得非常不干涉。

在 VS C# Express 2008 中启动全新的 WPF 应用程序时,有两个直接可见的源文件:App.xamlWindow1.xaml。这一切都很好而且花花公子,但我唯一看到事情开始的任何意义是 App.xaml 中的行

<Application x:Class="SomeName.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  StartupUri="Window1.xaml">

查看 SomeName.App 的类名,我猜测扩展 Application 表示从哪里开始,但应用程序如何真正知道呢?

我对 Java 非常熟悉,所以如果这样解释起来更容易,请这样做。我喜欢在尽可能低的层次上理解事物(不进入机器代码),所以请帮助我更深入地了解 C# 和 WPF 的内部工作原理。

一如既往,感谢 StackOverflow 社区提供的任何帮助。 :)

最佳答案

您可能需要了解的概念是,工具链从 XAML 文件生成代码,这为声明性 XAML 提供了“类似代码”的行为。

但 WPF 非常复杂,与其他任何东西都不一样,一本书可能会有用 - 我个人认为 Adam Nathan WPF 这本书非常好,并且比互联网更好地涵盖了“对概念的一般理解”的内容, 国际海事组织。

生成的应用程序文件可能会被称为 app.g.cs,并且会在中间文件目录之一中 - 在那里查看实际的启动代码 - 除其他外,你会发现类似:

    public static void Main() {
        MyAppName.App app = new MyAppName.App();
        app.InitializeComponent();
        app.Run();
    }

此时它可能开始变得更有意义。

事实上,如果您不喜欢声明式路线,您可以自己编写所有启动代码。

关于c# - WPF 应用程序如何知道从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757612/

相关文章:

c# - 如何将大数据表复制到 MySql 表?

c - recvfrom() 错误 10035 使用非阻塞套接字

c++ - 有什么方法可以编写一个类,使得不能从它继承任何类?

c++ - 从 VS2008 迁移到 VS2010 时要记住的事情

c# - 用于选择一项的 Linq 代码

c# - 如何从 C# wpf 应用程序使用 F# 类型

c# - 使用 DataTable 和 List<T> 加入和分组

c# - 委托(delegate)事件的模式

c# - 带有 ORDER BY 的 SQL 查询语法不起作用

c# - 如何在特定边界内绘制具有可变宽度边框的圆角矩形