uwp 获取listviewitem里的控件_更换UWP应用磁贴图标,搭配新版开始菜单效果

ac4c3ae32dca0447e128abfdbe05cccc.png

Windows10发布了20H2带来了全新的开始菜单(屏幕)的效果,磁贴的背景从原本的默认主题色改为了透明背景。

49c4d89466946084ad2b377b5328a260.png
20H2版开始菜单

虽然20H2尚未推送,但是通过组件功能启用包,你可以提前在2004版系统上启用该功能。

微软 Win10 版本 2004 如何强制开启全新 “开始”菜单​www.ithome.com

全新的背景搭配Fluent设计的图标十分美观,但是很多像我一样拥有强迫症的小朋友一定受不了风格不统一的图标出现在这样的开始屏幕里吧。比如像这样的:

019422c642d28a198417986a967d358a.png
微信 for windows10糟糕的分辨率和图片比例可以算是磁贴设计的反面教材了

对于一般的win32应用,修改和替换都比较简单,可以进入安装目录自行修改或替换图标。

但是对于从应用商店安装的应用,微软从驱动层面限制了对"C:Program FilesWindowsApps"目录的写入权限,导致我们无法手动修改应用图标。所以下面链接中的方法已失效

https://zhuanlan.zhihu.com/p/20542873​zhuanlan.zhihu.com

当然也有人通过魔改驱动获得了该目录修改权限

https://stackoverflow.com/questions/60248596/bypassing-windowsapps-folder-protection-other-than-acls​stackoverflow.com

但是我们不推荐使用这样的高风险方法。

为了实现更美观的磁贴效果我们可以使用一些工具,通过修改自定义快捷方式的图标的方法来达到我们的目的。

我们所使用的核心工具是TileIconifier该工具可以为快捷方式创建自定义的磁贴。

Jonno12345/TileIconifier​github.com
1f7674f1c2d022976b4ba21464ea1372.png

Tilelconifier中自带的小工具(Utilities-Custom Shortcut Manager)能够识别windows商店应用并为其创建快捷方式,但是我在实际使用中发现该工具虽然能够识别微信UWP,但无法识别微信 for windows10,所以我们需要手动创建微信 for windows10的快捷方式。方法如下:

Windows 10更改UWP程序固定在任务栏和开始屏幕的图标​www.xstui.com
f4bde034221709e79735d71ebfaea9d7.png

但是按照下文链接中的方法只能更换低质量的ico图标,在创建快捷方式后我们可以通过TileIconifier,使用任意图片来创建应用的磁贴图标。

  • 首先启动PowerShell
  • 在PowerShell中输入如下命令获取应用的AppId
Get-StartApps -name "UWP应用名称" 

a0b2d9343fd662f9c638b62a6d16da82.png
图中第二项即为微信 for windows10
  • 在桌面创建快捷方式在对象的位置输入框中,输入
explorer shell:appsfolder该应用的AppId

02f6982360f3d7132eb313fecb40acb6.png

9954d83224f4e0457cd748e72fcfabc1.png
  • 在使用TileIconifier前我们需要首先将刚刚创建的快捷方式pin到开始菜单(屏幕)上,这样才能被TileIconifier识别到。
  • 接下来打开TileIconifier,就可以在左侧的快捷方式列表内找到我们刚刚创建的应用快捷方式了,于是我们就可以自定义图标了。
  • 首先我们需要准备一张符合fluent design风格的应用icon,我在icons8上面找到了一张效果不错的微信logo
https://icons8.com/icons/set/wechat​icons8.com

ac402a956208eae6b34f7f56ed81dc55.png
  • 在TileIconifier双击右侧的Medium icon图像框,选择Use custom image即可使用我们预先准备好的图标。
  • 将背景色(Background Colour)设置为#FFFFFF,并将icon占图像的比例调整至合适大小(我这里使用12%),点击Tile Iconif将磁贴pin到开始菜单/屏幕上。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinUI 控件UWP 控件、WPF 控件和 Silverlight 控件在语法和结构上有所不同,因此可以通过检查 XAML 代码的命名空间来区分它们。以下是一些常见的命名空间和控件: - WinUI 控件:命名空间为 `http://schemas.microsoft.com/winui/2021/xaml/behaviors` 或 `http://schemas.microsoft.com/winui/2021/xaml/presentation`,控件名称以 `Microsoft.UI` 开头。 - UWP 控件:命名空间为 `http://schemas.microsoft.com/winfx/2006/xaml/presentation` 或 `http://schemas.microsoft.com/winfx/2008/xaml/presentation`,控件名称以 `Windows.UI` 开头。 - WPF 控件:命名空间为 `http://schemas.microsoft.com/winfx/2006/xaml/presentation` 或 `http://schemas.microsoft.com/netfx/2007/xaml/presentation`,控件名称以 `System.Windows` 或 `Microsoft.Windows` 开头。 - Silverlight 控件:命名空间为 `http://schemas.microsoft.com/winfx/2006/xaml/presentation` 或 `http://schemas.microsoft.com/client/2007`,控件名称以 `System.Windows.Controls` 或 `Microsoft.Windows.Controls` 开头。 可以通过读取 XAML 文件中的命名空间来确定使用的控件类型。例如,以下代码片段演示了如何读取 XAML 文件中的命名空间: ```csharp using System.Xml.Linq; // Load XAML file into an XDocument XDocument xdoc = XDocument.Load("MyXamlFile.xaml"); // Get the root element of the XAML file XElement root = xdoc.Root; // Get the default namespace of the XAML file XNamespace ns = root.GetDefaultNamespace(); // Check the namespace to determine the type of controls used in the XAML file if (ns.NamespaceName.StartsWith("http://schemas.microsoft.com/winui")) { // WinUI controls } else if (ns.NamespaceName.StartsWith("http://schemas.microsoft.com/winfx")) { // UWP or WPF controls } else if (ns.NamespaceName.StartsWith("http://schemas.microsoft.com/client")) { // Silverlight controls } else { // Unknown namespace } ``` 请注意,这只是一种简单的方法来区分不同类型的控件,实际上还需要考虑一些其他因素,例如控件的属性和行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值