【发布时间】:2017-01-10 23:38:06
【问题描述】:
我遇到了一个非常有趣的问题。
假设你在 UWP 应用中有以下 XAML 页面内容:
<ContentControl Content="{x:Bind ApplicationDataLocalityEnum}" />
<ContentControl Content="{x:Bind FontStyleEnum}" />
并且在页面的代码隐藏中包含以下属性:
public ApplicationDataLocality ApplicationDataLocalityEnum { get; } =
ApplicationDataLocality.Local;
public FontStyle FontStyleEnum { get; } =
FontStyle.Normal;
预期的结果是,应用会显示“本地”和“正常”。
实际结果如下:
这背后的原因是什么?我对此非常好奇,但即使我尝试挖掘调试器值很长时间,它也从未发现任何可能导致这种情况的东西。
你可以玩弄我的sample project on GitHub。
【问题讨论】:
-
虽然我无法回答您的实际问题,但如果它给您带来问题并且您需要解决问题,那么最好创建一个值转换器,以便您可以正确显示它。不过会非常有兴趣看到真正的答案!
-
是的,我知道 ValueConverter 有效,但我是出于好奇而问的,因为我真的无法弄清楚:-D。
-
我一直在玩这个,到目前为止我可以看到它只发生在 ContentControl 中。使用标准 TextBlock/TextBox 时,所选的 FontStyle 会正确显示。这可能与 ContentControl 呈现其内容的方式有关,可能是一个错误。
-
但是,如果您尝试使用带有 ItemTemplate 的 ListView 并在其中放置一个 TexBlock 并在那里绑定 Text 属性 - 它再次发生!我只是知道这是怎么回事:-D
-
请不要将 ValueConverter 用于这样的事情。只需在您的代码隐藏类中创建
public string FontStyleString => FontStyleEnum.ToString();。
标签: c# enums windows-runtime uwp winmd