dotnet 9 WPF 支持 Style 的 Setter 添补内容时可忽略 Value 标签 ...

打印 上一主题 下一主题

主题 900|帖子 900|积分 2700

本文记录 WPF 在 dotnet 9 的一项 XAML 编写语法改进点,此改进点用于解决编写 Style 的 Setter 举行给 Value 赋值时,不能将 Value 当成默认内容,必要多写 Value 标签的问题。通过此改进点可减少两行 XAML 代码
在原先的 WPF 版本里面,对 Style 的 Setter 添补复杂的对象内容时,大概的示例代码如下
  1. [/code]可以看到  属于不可省略的内容
  2. 在本次引入的改进之后,即可将 Setter 的 Value 当成默认内容,从而减少  的代码,改进后的写法如下
  3. [code]
复制代码
此改进是在很多年前,由 Thomas Levesque 大佬在 https://github.com/dotnet/wpf/issues/84 提出的。被微软的 Anjalihttps://github.com/dotnet/wpf/pull/8534 实现

此变更将影响 XAML 语法,对应的文档也举行了同步更新,详细请看 https://github.com/dotnet/dotnet-api-docs/pull/9581
为什么之前的版本里面,必须编写  呢?这是由于在原先的版本里面 Style 的 Setter 的 Value 不是默认的内容,即在 Setter 标签里面直接放入内容,将不能被放入到 Value 属性里面
https://github.com/dotnet/wpf/pull/8534 的实现里面,将 Setter 的 Value 当成默认内容,于是在 Setter 里面放入的内容,将会主动给 Value 举行赋值
上述的核心逻辑在 src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Markup/Baml2006/WpfGeneratedKnownTypes.cs 里面,给创建 Setter 时,设置 baml 类型里面内容对应的属性名是 "Value" 属性名,如以下代码
  1.         private WpfKnownType Create_BamlType_Setter(bool isBamlType, bool useV3Rules)
  2.         {
  3.             var bamlType = new WpfKnownType(this, // SchemaContext
  4.                                               556, "Setter",
  5.                                               typeof(System.Windows.Setter),
  6.                                               isBamlType, useV3Rules);
  7.             bamlType.DefaultConstructor = delegate() { return new System.Windows.Setter(); };
  8.             bamlType.ContentPropertyName = "Value"; // 这是本次更改的核心逻辑
  9.             bamlType.Freeze();
  10.             return bamlType;
  11.         }
复制代码
当前的 WPF 在 https://github.com/dotnet/wpf 完全开源,利用友好的 MIT 协议,意味着允许任何人任何组织和企业恣意处置,包罗利用,复制,修改,归并,发表,分发,再授权,或者销售。在仓库里面包罗了完全的构建逻辑,只必要本地的网络足够好(由于必要下载一堆构建工具),即可举行本地构建

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表