【发布时间】:2016-02-17 19:25:08
【问题描述】:
我的主 UWP 应用 (Imp.Dash) 引用了一个类库 (Imp.Dash.Cook)。在所述类库的一个页面中,我有以下 XAML:
<TextBlock Text="Banana" FontFamily="/Imp.Dash;component/Fonts/Portmanteau Regular.ttf#Portmanteau"/>
<TextBlock Text="Banana" FontFamily="/Imp.Dash.Cook;component/Resources/Portmanteau Regular.ttf#Portmanteau"/>
<TextBlock Text="Banana" FontFamily="Resources/Portmanteau Regular.ttf#Portmanteau"/><!-- Works in Designer-->
<TextBlock Text="Banana" FontFamily="Fonts/Portmanteau Regular.ttf#Portmanteau"/>
在尝试更改字体时,只有第三行有任何影响。字体确实发生了变化,但仅限于设计器。在运行时,我什么也得不到。输出中没有错误或类似错误。
有没有人知道我做错了什么,或者我该如何调试它?
字体是一个 .ttf,位于我的类库的 Resources 文件夹中。它设置为Content 和Do not copy。后者没有任何影响,即使设置为Copy Always。我也尝试将它放在主项目中,在Fonts 下。
我在图像资源方面遇到了类似的问题,但在这种情况下,它不是嵌入式资源。 (见UWP - Load image in class library)
【问题讨论】:
-
检查输出窗口是否有任何绑定错误/,您可以通过View->Output进行检查
-
您是否执行了项目清理和重建?
-
没有输出错误或任何表明有问题的东西。是的,我已经清理、重建、重新启动了。
-
这是声明式编程的祸根。您的程序中没有可识别的语句可以帮助调试器说“这是错误的!”并提示您对其进行修改。所以没有错误也没有产生异常,没有办法调试它,它只是让字体映射器想出别的东西。是的,这很糟糕。
-
@HansPassant 尽管我很喜欢 XAML,但我同意你的看法。引用任何类型的资源都是 UWP 和 WPF 的痛点。我不确定为什么它在找不到字体时不能抛出异常。只是一些类似于运行时绑定错误的输出很适合我。
标签: c# xaml uwp win-universal-app