UWP - 绑定枚举差异

2024-06-29

我遇到了一个非常有趣的问题。

假设 UWP 应用中有以下 XAML 页面内容:

<ContentControl Content="{x:Bind ApplicationDataLocalityEnum}" />
<ContentControl Content="{x:Bind FontStyleEnum}" />

并且在页面的代码隐藏中包含以下属性:

    public ApplicationDataLocality ApplicationDataLocalityEnum { get; } =
               ApplicationDataLocality.Local;

    public FontStyle FontStyleEnum { get; } = 
               FontStyle.Normal;

Expected结果是,应用程序将显示“本地”和“正常”。

Actual但结果如下:

这背后的原因是什么?我对此很好奇,但尽管我已经尝试深入研究调试器值很长时间,但它从未揭示任何可能导致此问题的内容。

你可以玩我的GitHub 上的示例项目 https://github.com/MartinZikmund/Stack-Overflow-2016/tree/master/EnumDisplayQuestion.


你应该调查一下来源吗FontStyle(只需按F12)你会发现它在Windows.Foundation.UniversalApiContract.winmd。这不是 .NET 程序集,而是投影到 .NET 中的本机程序集。 MSDN 的参考资料 https://msdn.microsoft.com/en-us/library/windows/apps/br225864.aspx says:

使用 .NET 编程时,此接口是隐藏的,开发人员应使用 Nullable 类。基本 IDL 签名显示 IReference(带有约束)的所有 Windows 运行时成员都改为使用可为空值类型的可为空语法(例如?bool)公开。

那么为什么它不起作用呢?

答案的核心是,这不是 .NET 类型,并且其行为也不像 .NET 类型。意义ToString()并不是像它一样本地实现的enum但行为却像GetType().ToString(),这解释了您所看到的输出。

他们为什么不让它发挥作用呢?

为了在平台端纠正这个问题,类型需要一种机制来区分计数、结构和委托。对于结构和代表,您会期望ToString()回来GetType().ToString()而不是名称值;因此,这种通用行为是所有选项中最常见的选择。

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

UWP - 绑定枚举差异 的相关文章

随机推荐

  • Windows 故障转储调用堆栈仅显示 wow64

    Problem 我有一个我们开发的供内部使用的 Windows 应用程序 感谢 Windows 错误处理 窗口保持打开状态 我可以轻松地从任务管理器生成故障转储 我以前曾通过 eclipse 在 linux 上使用过一次故障转储 但这是第一
  • 如何覆盖 Template Toolkit 模板文件中的 WRAPPER?

    有没有办法禁用WRAPPER那是设置在新的 配置 http search cpan org dist Template Toolkit lib Template pm 通过模板或临时覆盖parse 我想要一个默认值WRAPPER 我将用于
  • 折叠 numpy 数组除前两个维度之外的所有维度

    我有一个可变维度的 numpy 数组 例如它可以具有以下形状 64 64 64 64 2 5 64 64 40 64 64 10 20 4 我想要做的是 如果维数大于 3 我想将其他所有内容折叠 堆叠到第三维中 同时保留顺序 因此 在我上面
  • 如何打印正在使用的实际 MAVEN_OPTS?

    有没有办法让maven在构建过程中输出环境和maven变量的值 当出现问题时 这对于调试非常有用 您可以使用Maven 帮助插件 http maven apache org plugins maven help plugin and hel
  • Perl 和 MySql 中的 utf8 编码

    我的数据库 MySql 有 utf8 general 排序规则 我正在从数据库访问数据并显示一个网页 用 Perl 开发 它显示瑞典语字符 和不同的字符 我检查了Mysql数据库 在那里我可以看到其中包含 字符的数据 看来 访问数据时存在编
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • 根据值绘制具有条件颜色的折线图

    我想绘制折线图 根据值 它应该改变它的颜色 我发现的是 plot sin seq from 1 to 10 by 0 1 type p col ifelse sin seq from 1 to 10 by 0 1 gt 0 5 red ye
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • 服务帐户的 Keycloak uma-grant 类型票证似乎不适用于策略

    我正在尝试使用 Keycloak AuthzClient 在资源服务器中注册资源和相 关权限 我有一个启用了 authz 服务的资源服务器 resourceserver 使用 AuthzClient 使用包含资源服务器的客户端 ID 和机密
  • PHP 中的随机排列对象

    如何在 PHP 中对对象进行排序 我试过shuffle 但这需要一个数组 Warning shuffle expects parameter 1 to be array object given in var www index php o
  • Finalize() 何时执行? [复制]

    这个问题在这里已经有答案了 在一次采访中我被问到 假设 JVM 在 A 类对象未被使用时运行 gc class A some code here protected void finalize code here 它是否保证finalize
  • 如何为所有导航控制器和视图控制器设置自定义导航栏(标题 + titleView)?

    我有一个选项卡式应用程序 选项卡中有导航控制器 其中有视图控制器 它们都使用相同的导航控制器导航栏 后退按钮 徽标图像 目前 我将此代码放置在每个视图控制器中 void viewDidLoad super viewDidLoad self
  • 如何为广播身份验证路由定义或传递身份验证守卫而不是默认身份验证守卫?

    我对实时事件广播非常陌生 我有简单的 laravel echo server 设置并处理所有内容 我无法针对其他身份验证设置 定义身份验证guard它总是检查user default guard定义于auth php我已经为每个守卫私人通道
  • Visual Studio 2010:嵌入互操作类型

    我在上找到了一些关于此的信息斯科特 汉塞尔曼斯博客 http www hanselman com blog CLRAndDLRAndBCLOhMyWhirlwindTourAroundNET4AndVisualStudio2010Beta1
  • RecyclerView:调整项目大小的动画

    我有一个RecyclerView 回收者视图的每个项目都可以展开或不展开 同一时间只能展开一项 本质上 我试图在棒棒糖拨号器中重新创建历史列表 我发现在 RecyclerView 上使用 LayoutTransition https sta
  • pip 升级到 pip 10.x.x 后解析需求文件的正确方法?

    所以今天我确实发现随着发布pip 10 x x the req软件包更改了其目录 现在可以在下面找到pip internal req 由于通常的做法是使用parse requirements功能在你的setup py从需求文件中安装所有依赖
  • 如何循环遍历列表中除最后一项之外的所有项? [复制]

    这个问题在这里已经有答案了 Using a for循环 如何循环遍历列表中除最后一项之外的所有项 我想遍历一个列表 检查每个项目与后面的项目 我可以在不使用索引的情况下做到这一点吗 for x in y 1 If y是一个生成器 那么上面的
  • Aptana 函数定义弹出窗口

    我注意到在 Aptana 2 0 和 1 5 1 中 当输入 php 函数时 您不再看到显示函数描述及其参数的弹出窗口 有谁知道如何让它再次工作 因为我非常依赖它来记住哪些参数去了哪里 Open in PHP Manual捷径Shift F
  • 不接受基于脚本的保留关键字,但在标记中接受

    在这里我提出一个问题保留字 据我所知 关键字不能是变量 我遇到了一个问题 即在两个基于脚本的代码中将保留字字符串作为参数传递 但在基于标签的代码中编写相同的代码时不会遇到任何错误 我的问题是 我将参数名称传递为For 如果它是保留字意味着我
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容