微软在新版 UWP 计算器中加入了一个 "置顶" 功能, 它相当于我们之前看视频的 "画中画" 一样.
点击后窗体置顶, 同时可以进行其他任务.
有的小伙伴说, 不就是一个图标吗, 去 Segoe MDL2 图标 把图标找过来不就行啦, 很简单那啊.
可是等你去那个页面找时, 就会发觉事情事情并不是那么简单
微软并没有把这两个图标进入字体集合里面, 但是对我我这样, 又想用它这个字体的咋办呢?
我之前还在上面那个页面提过一个 Issue, 叫微软把这两个字体加进去.
但是这帮人懒得要死. 对于他们正常来说, 加一个字体, 估计一年时间 +.
本着能折腾就折腾的精神 (没错, 我之前时说过 "能不折腾就不折腾" 的话, 是我说的, 没错! 但是现在我又想折腾了)
首先我们要知道, 微软的 Windows Calculator 已经开源啦 https://github.com/microsoft/calculator .
那么事情就简单很多啦.
下载 Calculator 的源代码, 看微软在那两个图标上干了啥?
打开 calculator-master\src\Calculator.sln,MainPage.xaml.
拉到文件最后我们发现置顶的 Button 代码:
- <Button x:Name="NormalAlwaysOnTopButton"
- x:Uid="EnterAlwaysOnTopButton"
- Grid.Column="1"
- VerticalAlignment="Top"
- HorizontalContentAlignment="Center"
- Style="{StaticResource SquareIconButtonStyle}"
- Background="Transparent"
- FontFamily="{StaticResource CalculatorFontFamily}"
- AutomationProperties.AutomationId="NormalAlwaysOnTopButton"
- Click="AlwaysOnTopButtonClick"
- Content=""
- Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}"/>
看见了没, Button 的 Content 为 [] , 而这个神秘代码在 Segoe MDL2 图标页面并不存在的啦.
然后还有 TitleBar.xaml, 里面有退出置顶的按钮.
- <Button x:Name="ExitAlwaysOnTopButton"
- x:Uid="ExitAlwaysOnTopButton"
- Width="46"
- Height="Auto"
- HorizontalAlignment="Left"
- HorizontalContentAlignment="Center"
- Style="{ThemeResource CommandBarFlyoutEllipsisButtonStyle}"
- Background="Transparent"
- FontFamily="{StaticResource CalculatorFontFamily}"
- FontSize="14"
- FontWeight="Thin"
- x:Load="False"
- AutomationProperties.AutomationId="ExitAlwaysOnTopButton"
- Click="AlwaysOnTopButton_Click"
- Content=""
- Visibility="Collapsed"/>
现在如果我们直接在自己的项目中使用这两个神秘代码, 是不会正常显示的.
因为现有的微软 Segoe MDL2 Assets 字体并没有内置他们. 而如果你仔细的话, 就会发现, 刚才的两个 Button, 都是用了这一行神秘代码
FontFamily="{StaticResource CalculatorFontFamily}"
也就是说, 这个是微软偷偷自定义的字体.
那么既然他们不给加到字体库, 我们就自己动手, 丰衣足食.
1. 首先, 进入 Assets 文件夹, 把 CalcMDL2.ttf 文件 copy 到我们自己的项目 Assets 里面, 然后改成你自己的名字也可以.
然后设置这个文件的生成操作为 "内容", 复制到输出目录为 "始终复制".
2. 接着, 在 App.xaml 中加入自定义字体资源, 注意那个字体名字改成你自己的.# 号后面不要改.
Key 的名字自己定义.
- <Application.Resources>
- <ResourceDictionary>
- <FontFamily x:Key="CalculatorFontFamily">ms-appx:///Assets/CalcMDL2.ttf#Calculator MDL2 Assets</FontFamily>
- </ResourceDictionary>
- </Application.Resources>
3. 使用自定义字体
- <Button x:Name="ExitAlwaysOnTopButton"
- FontFamily="{StaticResource CalculatorFontFamily}"
- Content=""/>
Bingooooooooooooooo! 大功告成.
来源: https://www.cnblogs.com/hupo376787/p/11699748.html