【问题标题】:Why does the Application class (App) have both xaml and code behind files?为什么Application类(App)既有xaml又有代码隐藏文件?
【发布时间】:2011-06-10 13:21:25
【问题描述】:

在 WPF 应用程序中,所有视图都继承自 System.Windows.Window,并具有关联的 xaml 和代码隐藏文件。这似乎合乎逻辑。

但是我很困惑,为什么从 System.Windows.Application 继承的 App 文件有一个 xaml 文件?虽然它是一个应用程序而不是一个视图(它不可见)?我知道这个文件通常用于定义应用程序资源等,而 xaml 提供了一种有效的方式来定义它们。但这也可以通过编程方式完成。那么 wpf 的设计者通过为“App”提供 xaml 和代码隐藏文件获得了什么好处?其中一个还不够吗?

【问题讨论】:

  • this question 可能重复。
  • @archer。这个问题不一样。在那个问题中,有人问应用程序文件中需要什么样的代码。我不是在问那个。您可以重新阅读问题。我知道其中通常定义了什么。但我的观点是,如果这不是一个视图(对用户不可见),那么为什么它有一个 xaml 文件?仅仅有一个cs文件还不够吗?

标签: wpf xaml


【解决方案1】:

但是我很困惑,为什么继承自 System.Windows.Application 的 App 文件有一个 xaml 文件?虽然它是一个应用程序而不是一个视图(它是不可见的)?

请记住,XAML 不是一种 UI 语言,而是一种通用的声明性语言。虽然它确实主要用于表示 WPF 或 SilverLigth 的 UI,但它也用于声明其他非 UI 技术中的对象图。

我想到的第一个例子是工作流(XOML 是 XAML 的派生),SharePoint 在一些隐藏部分也使用 XAML,我在一个客户项目中看到使用 XAML 作为元用于生成网络应用程序的语言(是的,它实际上输出 HTML)。

然后,为了回答您的问题,该应用程序具有两个文件(实际上不是必需的),因为您可以:

  • 声明一些对象(在 xaml 中)
  • 覆盖应用程序的行为(通过覆盖适当的方法)

【讨论】:

    【解决方案2】:

    设计者可以在不输入任何代码的情况下为整个应用程序指定资源并在任何窗口中使用它。它类似于所有窗口的根。例如,如果您为每个窗口中的每个 TextBox(或任何其他控件)使用一种样式,则可以在 App.xaml 中指定它并在任何地方绑定而无需重复。

    【讨论】:

    • 我知道。但我的问题是,为什么有两个文件,而不仅仅是一个。可能是为了方便开发人员,以便他们可以使用他们更熟悉的任何语言(xaml 或 cs)来实现他们的逻辑。
    • XAML 文件 - 适用于对 C# 一无所知的设计师,CS 文件 - 适用于编码人员。怎么了?您认为它们可以如何合并?
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2015-01-13
    • 2010-11-22
    相关资源
    最近更新 更多