XAML文件如何与cs文件关联?

2024-01-15

看来 XAML 文件在 C# 项目中应该有相应的 .cs 文件。我知道 Visual Studio 可以为我们做所有事情。我只是好奇它们是如何联系在一起的?我的意思是,它们是在项目文件中指定的,还是仅仅因为它们具有相同的名称?而且,App.xaml 文件指定了启动文件,但是编译器如何知道呢?是否可以指定 App.xaml 之外的另一个文件来执行与 App.xaml 相同的操作?


WPF 中并没有发生什么神奇的事情。所有发生的事情都写在某个地方。 VS 生成了一些代码。

xaml 代码与一个类链接。

<Window x:Class="YourNameSpace.MainWindow" ...

VS 为您生成一个 MainWindow.cs 文件,其中包含一个名为MainWindow of Window类型。类型在这里很重要。如果您使用其他类型,即使类名正确,编译器也不会将其链接到您的 MainWindow.xaml。 最终,对于 UserControl,您将拥有 xaml 标签<UserControl代替Window tag.

另一件事是,编译器还在编译时生成一个名为MainWindow.g.cs in the obj文件夹,您还可以在其中找到MainWindow.bamlxaml 文件的编译版本。 该文件将包含一个分部类 MainWindow,其中包含声明在 XAML 中使用的所有控件。这是编译器执行的幕后工作,与 XAML 和相关类之间的关联无关。

应用程序是相同的,只是类类型发生了变化。这是为了将 XAML 与类链接起来。 对于启动窗口,它默认在 XAML 文件中指定为一个类。但是,您可以自定义 .cs 文件并在 ApplicationStartUp 事件中执行自己的逻辑。

关闭事件也是如此。默认情况下,当所有窗口都关闭时,但您可以将其更改为当主窗口关闭或显式关闭时。

csproj(在 c# 的情况下)告诉编译器哪个类是应用程序。

<ApplicationDefinition Include="App.xaml">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
</ApplicationDefinition>

不仅仅是像其他人所说的 XAML 标签。该标签仅定义类的类型,并不使您的程序从此特定类开始。

Application overview
(source: microsoft.com http://i.msdn.microsoft.com/dynimg/IC144461.png)

您可以在这里进一步阅读:MSDN - 构建 WPF 应用程序 https://learn.microsoft.com/en-us/dotnet/framework/wpf/app-development/building-a-wpf-application-wpf

MSDN - WPF 中的代码隐藏和 XAML https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/aa970568(v=vs.100)

MSDN - 应用程序管理概述 https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/ms743714(v=vs.100)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XAML文件如何与cs文件关联? 的相关文章

  • 如何防止在 ActiveX 方法调用期间重新进入 WPF 事件处理程序?

    我们从 WPF 和 STA 应用程序中调用 ActiveX 组件上的方法 此调用是通过以下方式后期绑定执行的 res ocx GetType InvokeMember methodName flags null ocx args 其中 oc
  • 如何在清除排序描述后删除wpf网格排序箭头

    我单击网格标题对列进行排序 然后单击 重置 按钮以通过其集合视图清除排序描述 但排序箭头图标仍然保留在标题中 如何去除它 我在尝试弄清楚如何完全清除网格中的排序时遇到了这个问题 感谢 krishnaaditya 回答如何清除标题中的排序箭头
  • 即使进程确实存在,为什么 Process.WaitForExit 也会抛出“无进程”异常?

    我有一个包含以下代码的 Windows 服务 public static void ExtractTextInner string source string destination ProcessStartInfo startInfo n
  • 何时使用 Windows Workflow Foundation? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有些事情仅通过手动 代码 更容易实现 但有些事情通过 WF 更容易实现 看起来 WF 可以用来创建 几乎 任何类型的算法 所以 理论上 我可以在
  • 如何将文本放在 RadioButton 的顶部

    我正在尝试实现附件中显示的效果 但没有成功 甚至有可能吗 我试图将文本框放在单选按钮内 并将其设置为水平和垂直内容对齐 但它没有按我想要的方式工作 欢迎任何建议 Resource
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • SqlCommand.Dispose() 在 SqlTransaction.Commit() 之前?

    在提交事务之前处理分配给事务的命令是否有效 我自己测试了以下代码 它似乎工作得很好 但这是一个相当小的例子 所以我正在寻找是否有人确实知道的确认 internal static void TestTransaction try Progra
  • WCF服务健康状况监控

    我刚刚实现了 WCF 服务 目前正在研究服务监控选项 我们的服务器团队目前仅托管 java 服务 希望我们的实例始终运行 因此它可以在该实例的生命周期内收集数据 他们表示将使用我们的 webmon 操作之一来获取统计信息 但我们正在使用每次
  • 为标签生成成员:我有什么理由应该这样做?

    我在这里读过另一篇文章 因此 如果可能的话 您不应该为标签生成成员 我想知道有什么潜力缺点到这会是 我说的好处是性能提高 对吗 还要别的吗 我有一个带有 100 个标签的 winform 应用程序 不产生成员有什么好处 还是只有在 Web
  • Powershell - 在不安装 Excel 的情况下将 CSV 转换为 XLS

    我有一台自动生成报告的服务器 报告采用 CSV 格式 我需要能够直接加密文件 无需第三方压缩 无 WinZIP 或 WinRAR 我认为最好的想法是将 CSV 转换为 XLS 然后通过 Powershell 密码保护 XLS 文件 不幸的是
  • 标准化 C# 中的换行符

    我有一个数据流 可能包含 r n r n n r 或它们的任意组合 有没有一种简单的方法来规范化数据 使它们全部变成 r n 对 使显示更加一致 所以会产生这种转换表 r gt r n n gt r n n n gt r n r n n r
  • 如何将 Razor 视图转换为字符串?

    我想使用我的 Razor 视图作为某种发送电子邮件的模板 所以我想将我的模板 保存 在视图中 将其作为字符串读入控制器 进行一些必要的替换 然后发送它 我有有效的解决方案 我的模板作为 HTML 页面托管在某处 但我想将其放入我的应用程序中
  • 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

    I ve 之前问过这个 https stackoverflow com q 4351985 398713之前在 Stack Overflow 上以一种迂回的方式 这次想把它做好 如何将 ANSI 代码页 1252 转换为 UTF 8 同时保
  • 如何捕获一个 int

    我正在使用 IL 抛出一个 Int32 并捕获它 这只是出于好奇 我并没有试图实现任何目标 所以请不要告诉我抛出异常而不是 int method private hidebysig static void Main string args
  • 使用 XML 的 WCF 请求验证

    我有一个WCF使用 Net 4 0框架的SOAP Web服务 我在用contract first方法 即 服务代码是使用 WCSF Blue 工具从手写 WSDL 生成的 我对请求消息有以下要求 如果价格小于 100 则不得有税项 但如果大
  • ASP.NET MVC:如何可靠地获取当前请求的真实URL?

    现在我有一个 MVC 应用程序运行在http 127 0 0 1 8081 http 127 0 0 1 8081 它实际上在 Azure 计算模拟器中运行 浏览器位置栏清楚地显示端口号为 8081 然而 Request Url and R
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv

随机推荐

  • cordova-plugin-file-transfer 的转换错误

    我想使用cordova 文件传输插件 https cordova apache org docs en latest reference cordova plugin file transfer 我通过使用它Ionic Native 传输模
  • 获取.NET中给定字符对和字体的字距调整偏移值

    如何获得给定的 2 个之间的间距调整char在 NET 中 在WPF应用程序中 例如 假设我有字体Times New Roman尺寸的22那是bold 字符将使用什么字距调整A and v 如何在我的 WPF 应用程序中获取该值 如果你徘徊
  • 在实践中如何使用 Ember 中的 findAll 和 peekAll ?

    From EmberJS 文档 http guides emberjs com v2 0 0 models finding records toc retrieving multiple records我有以下两种方法来检索给定类型的所有记
  • 编译OpenCV时出错,致命错误:stdlib.h:没有这样的文件或目录

    我正在尝试编译 OpenCV 我已经尝试过 master 分支 当前提交 dc9602e 和版本 标签 3 1 0 我使用的是Fedora 24 我首先尝试使用Fedora附带的gcc gcc GCC 6 2 1 20160916 Red
  • 检索权限列表

    我正在尝试检索设备中应用程序的权限 奇怪的是 对于某些应用程序 我确实得到了结果 而在其中一些应用程序中 我无法检索任何权限 也许为了获取应用程序的权限列表 应用程序必须设置一些特定的标志 因为如果我尝试以这种方式获取我的应用程序的权限列表
  • 如何在不设置系统范围属性的情况下将 HTTP 代理用于 JAX-WS 请求?

    我有一个应用程序需要向 Internet 上的系统发出 SOAP 客户端请求 因此它需要通过我们的 HTTP 代理 可以通过设置系统范围的值 例如系统属性 来做到这一点 Cowboy style Blow away anything any
  • 为什么 TableAdapter.Fill 数据源之间的性能差异

    我有一个 Windows 窗体应用程序DataGridView居住着一个TableAdapter 我正在使用Fill循环更新UI数据的方法Async像这样子 Private Async Sub updateUI Dim sw As New
  • 如何始终运行 Spyder 项目中的主文件

    我正在开发一个包含多个文件的Python项目 令人烦恼的是我必须在单击运行之前选择描述和调用main的文件 因为如果不是Spyder3 Anaconda 则运行当前选定的文件 如果打开并选择文件 如何从 mainPrjPy py 中的 ma
  • 将 LibTiff 安装到 Visual Studio 2010 [重复]

    这个问题在这里已经有答案了 可能的重复 在 Visual Studio 2010 中使用 LibTiff https stackoverflow com questions 4647791 using libtiff in visual s
  • 将按钮绑定到命令 (Windows Phone 7.5)

    我正在开发我的 Windows Phone 应用程序 它使用一些简单的数据绑定 我已经创建了一个基于 MvvM 编程方法的应用程序 我当前正在开发的应用程序也可以通过 MvvM 方法工作 因为我想让我的代码尽可能干净 所以我正在寻找一种方法
  • 如何与 NHibernate 映射一对多关系中的枚举?

    我有两张单独的桌子 users roles id user id value lt Represented by the enum 还有他们的模型 class User int id IList
  • 在word文档中插入图片

    这是我第一次在 Apache POI 上工作 我要问的问题已经在这个网站上提出了 但没有给出明确的答案 所以我别无选择 只能接受你们的帮助 我正在尝试编写一个java程序 它从一个文件夹中获取图像并将该图像插入到word文档中 我在这个程序
  • 如何将 Django 模型上的属性(虚拟字段)公开为 TastyPie ModelResource 中的字段

    我在 Django 模型中有一个属性 我想通过 TastyPie ModelResource 公开该属性 我的模型是 class UserProfile models Model genderChoices u M u Male u F u
  • Trie、后缀树、后缀数组

    哪种结构提供最佳的性能结果 trie 前缀树 后缀树还是后缀数组 还有其他类似的结构吗 这些结构的良好 Java 实现是什么 编辑 在这种情况下 我想在大型名称词典和大量自然语言文本之间进行字符串匹配 以便识别文本上词典的名称 特里树是第一
  • 在 chrome DevTools/Console 面板中复制文本无法正常工作

    描述错误 最近 在 macOS 版本 12 6 3 上使用 Chrome 版本 112 0 5615 49 时 我在从 DevTools 的控制台面板复制和粘贴时遇到了问题 选择一个单词并复制后 当我粘贴它时 它总是向后移动2个字符 这可能
  • 最好的 JavaScript 日期解析器和格式化器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Zend_DB_Table 选择查询

    我有一个类似以下的代码 class Application Model Company extends Zend Db Table Abstract protected name companies private id private n
  • 为什么 rm 命令不删除文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我今天访问我的 Ubuntu 16 04 服务器并想要删除文件 test2 时 它根本没有被删除 我用过 rm test2 也 rm f
  • Nexus 7 (ME370T) 上的 BLE 与 Android 4.4.2

    我一直在尝试使用 sdk sdk samples android 18 legacy BluetoothLeGatt 中的示例将 BLE 设备与我的 Nexus 7 ME370T 配对 但我收到信息 不支持 Ble 我正在寻找解决方案 但我
  • XAML文件如何与cs文件关联?

    看来 XAML 文件在 C 项目中应该有相应的 cs 文件 我知道 Visual Studio 可以为我们做所有事情 我只是好奇它们是如何联系在一起的 我的意思是 它们是在项目文件中指定的 还是仅仅因为它们具有相同的名称 而且 App xa