简单分析Windows Calculator源代码

时间:2022-02-08 20:00:27

微软在新版UWP计算器中加入了一个“置顶”功能,它相当于我们之前看视频的“画中画”一样。

点击后窗体置顶,同时可以进行其他任务。

简单分析Windows Calculator源代码

简单分析Windows Calculator源代码

有的小伙伴说,不就是一个图标吗,去 Segoe MDL2 图标 把图标找过来不就行啦, 很简单那啊。

可是等你去那个页面找时,就会发觉事情事情并不是那么简单

简单分析Windows Calculator源代码

  

微软并没有把这两个图标进入字体集合里面,但是对我我这样,又想用它这个字体的咋办呢?

我之前还在上面那个页面提过一个Issue,叫微软把这两个字体加进去。

但是这帮人懒得要死。对于他们正常来说,加一个字体,估计一年时间+。

本着能折腾就折腾的精神(没错,我之前时说过“能不折腾就不折腾”的话,是我说的,没错!但是现在我又想折腾了??????)

首先我们要知道,微软的Windows Calculator已经开源啦。

那么事情就简单很多啦。

下载Calculator的源代码,看微软在那两个图标上干了啥?

打开calculator-master\src\Calculator.sln,MainPage.xaml。

简单分析Windows Calculator源代码

拉到文件最后我们发现置顶的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="&#xEE49;" Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}"/>

看见了没,Button的Content为【&#xEE49;】,而这个神秘代码在 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="&#xEE47;" Visibility="Collapsed"/>

现在如果我们直接在自己的项目中使用这两个神秘代码,是不会正常显示的。

因为现有的微软Segoe MDL2 Assets 字体并没有内置他们。而如果你仔细的话,就会发现,刚才的两个Button,都是用了这一行神秘代码

FontFamily="{StaticResource CalculatorFontFamily}"

也就是说,这个是微软偷偷自定义的字体。