WPF 应用程序是否需要使用 XAML?

2023-12-28

我想学习 C#,似乎每个人都从使用 WinForms 转向使用 WPF。由于使用了用于构建表单的 .XAML 文件,WPF 应用程序对我来说似乎要复杂得多。

在我真正参与之前,我只是想问一下,XAML 文件是构建 WPF 应用程序的唯一方法吗?有更简单的方法吗?我知道我可以学习使用 WinForms,这看起来容易得多,因为您基本上有一个使用代码的 Form 对象,但就像我提到的,我认为最好构建 WPF 应用程序


XAML 确实创造了东西a lot如果您知道如何使用它,就会更容易,因为它更具可读性和声明性,但如果您愿意,您也可以在 C# 代码中执行(几乎)任何操作。

e.g.

<Border BorderBrush="Red">
    <TextBlock Text="Lorem Ipsum"/>
</Border>

vs.

var border = new Border();
border.BorderBrush = Brushes.Red;
var textBlock = new TextBlock();
textBlock.Text = "Lorem Ipsum";
// The following step is implicit in XAML via the structure
border.Child = textBlock;

虽然这可以写得更简洁和层次化:

new Border
{
    BorderBrush = Brushes.Red,
    Child = new TextBlock
    {
        Text = "Lorem Ipsum"
    }
};

一般来说,我总是建议使用 XAML,原因包括:

  • 解析器根据 WPF 的布局系统优化树结构。
  • 创造DataTemplates不支持代码中的。施工采用FrameworkElementFactories已被弃用,转而使用XamlParser(我绝对不建议在代码中处理 XAML 字符串)。
  • UI 和代码分离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 应用程序是否需要使用 XAML? 的相关文章

  • C#/Linq 获取相邻的集合

    我有一个有序列表 例如 0 1 2 6 7 10 我想要得到数字加 1 的集合 我想要第一个数字和计数或系列 所以我会得到开始 0 计数 3开始 6 计数 2开始 10 计数 1 我怎样才能在 C 中做到这一点 答案是我认为最好的方式 对我
  • 如何使用 ioread64() 和 iowrite64() 访问 IO 内存?

    背景 我目前正在编写一个设备驱动程序教育设备 https github com qemu qemu blob master hw misc edu c在 qemu RISC V 中 由此question https stackoverflo
  • C++ lambda 构造函数参数可以捕获构造变量吗?

    下列compiles 但是是否存在任何悬而未决的参考问题 class Foo Foo std function
  • 如何访问UPnP设备的服务?

    设备 贝尔金 WeMo Switch开发环境 Windows 7 上的 MS VC 2010 我正在尝试使用 Windows 中的 C 枚举 UPnP 设备的服务 我有IUPnPDevice指针并可以访问多个属性 我有IUPnPServic
  • 在.NET windows窗体中向TableLayoutPanel添加动态控件

    我想在单击按钮时动态地将控件添加到面板 但我想整理一下位置 例如 我想要两个并排的文本框宽度相等 占用面板的相等空间 见下图 正如您在上图中看到的 单击按钮时 将添加控件 但我在使用 TableLayoutPanel 时遇到问题 请参阅下面
  • C# 在不使用反射的情况下运行时出现“找不到方法”异常

    我在获得上述异常时遇到问题 我有一个相对简单的结构 分为两个 dll 第一个包含 IEntityService IEntity 和基本实现 第二个包含实际的实现和接口 因此 有一个 IMachine 服务实现了 IEntityService
  • Makefile:没有规则来制作目标

    我正在关注本指南makefile http www cs colby edu maxwell courses tutorials maketutor 但我根本不理解最后一个例子 并且我无法让我的 makefile 工作 因为我收到了错误ma
  • 如何使用 OpenCV 从图像中获取调色板 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想提取图像的调色板 类似于此 来自 我需要它来提取特定的颜色 如黄色 绿色和棕色 并显示该颜色覆盖的区域的百分比 另外 我可以添加更
  • 在 C# 中使用 Nsubstitute 模拟具有固定参数的可选参数的函数返回 null

    我一直在尝试模拟一个包含带有固定参数的可选参数的函数 但每次我得到一个空值 这是我在接口中定义的函数 我想模拟它 List GetEntitiesByIDs List
  • 代码契约确保 ReSharperExternalAnnotations

    有谁知道如何在 ReSharperExternalAnnotations 中添加 Code Contracts Ensures 它在最新的 v7 1 3 和最新的 v8 EAP 中都不存在 在任何自定义 xml 中也不存在 具体来说 它应该
  • 隐藏 AppBar 中的省略号

    当您在 UWP 应用中创建 AppBar 或 CommandBar 时 控件侧面附近总会隐藏一个省略号 如下所示 我不想在我的应用程序中使用它 但我没有在其中找到任何方法 属性AppBar这会帮助我摆脱它 这应该是可能的 因为许多默认的 W
  • 为什么&在变量之前使用?

    Why is 之前在这里使用过decks scanf i decks 如果我的输入是像 k 这样的任何字母 那么它会显示像 1929597720 这样的输出 为什么 include
  • Visual Studio 2019 能否将所需的 DLL 打包到一个小的 .exe 文件中?

    我使用 Visual Studio 2019 使用 C WinAPI 制作了一个 Windows 应用程序 完成后 我构建了它 并在我的计算机上执行 它工作完美 然后我发给我没有Visual Studio的朋友 它说需要 msvcp140d
  • 空序列的算术平均值是多少?

    免责声明 不 我没有找到任何明显的答案 这与我的预期相反 在寻找代码示例时 算术平均值 我可以通过谷歌找到的前几个例子似乎是这样定义的 空序列生成的平均值为0 0 eg here https rosettacode org wiki Ave
  • 哪个 AWS Simple Email Service API 是最新的

    我正在使用 AWS SES 构建一个应用程序 但我不清楚应该针对哪个版本的 API 进行开发 AWSSDK SimpleEmail https www nuget org packages AWSSDK SimpleEmail AWSSDK
  • C# 中 PHP 的快速解析

    我需要用 C 解析 PHP 文件 我们本质上要求另一个国家的一些开发人员上传 PHP 文件 上传后我们需要检查 php 文件并获取所有方法和类 函数等的列表 我想过使用正则表达式 但我无法确定一个函数是否属于一个类等 所以我想知道是否已经有
  • 如何在 Linux 中创建可通过 Screen 应用程序连接的 pty

    我想创建 C C 应用程序 它在 dev xxx 中创建新的 虚拟 设备 并且能够与 屏幕 应用程序连接 例如 循环运行的程序会创建新的 dev ttyABC 然后我将使用 屏幕 dev ttyABC 当我向那里发送一些字符时 应用程序将其
  • 在实体框架中对连接字符串进行硬编码

    我知道很多人认为对连接信息进行硬编码是一个坏主意 但我有一个特定的情况需要这样做 请不要贬低我 因为你认为这是一个坏主意 再次 非常具体的情况 使用下面的代码 我在 LINQ 语句上收到以下错误 底层提供程序在打开时失败 我已经独立测试了连
  • 在 C# 中将字符串转换为等效的字节十六进制

    我有一个传入的字符串68016101061B4A60193390662046804020422044204000420040402060226024676DB16我想转换成0x68 0x01 0x61 0x01 0x06 0x1B 0x4A
  • 向前声明类模板显式/部分专业化有什么意义?

    C 98 标准规定 temp class spec 部分专业化声明本身不能通过名称查找找到 如果显式专业化也是如此 则这会使类模板显式 部分专业化的前向声明不可见 temp class spec match 当在需要实例化该类的上下文中使用

随机推荐