Fre*_*Ali 5 c# maui .net-6.0 .net-maui
最近我更新到了最新版本的 .net MAUI,我有点惊讶地发现 MAUI 设备类现在已被标记为“过时”
我有多个用例,其中我将设备类用于某些用途。
例如,现在主线程方法已过时:
Device.BeginInvokeOnMainThread(() =>{});
Run Code Online (Sandbox Code Playgroud)
现在是否有一个新的助手类将执行这些活动,或者我错过了什么?
所以我们有Xamarin.essentials替代方案
MainThread.BeginInvokeOnMainThread(() =>{});
Run Code Online (Sandbox Code Playgroud)
Xamarin.essentials 已移植到.Net Maui,所以同样的东西
MainThread.BeginInvokeOnMainThread(() =>{});
Run Code Online (Sandbox Code Playgroud)
关于 FontSize 甚至 Maui FontSizeConverter使用 Device
Device.GetNamedSize(NamedSize.Micro, typeof(Label)));
Run Code Online (Sandbox Code Playgroud)
所以像他们一样使用 pragma ;)
更新将在此github上讨论Core中NamedSize字体的实现
更新:
Maui 现在有一个命名空间,其中包含一堆与设备相关的类,您可以在 Microsoft.Maui.Devices 下找到它们
奥格回答:
正如杰森在评论中指出的那样,显然他们已经决定解散整个设备类,现在所有的功能要么被移出,要么被其他选项替换,没有一个在同一棵树下,尽管更多信息在这里
设备
这是包含类,它拥有的所有内容现在都已过时。准备在 .NET 7 中删除!GetNamedSize、NamedSize 和 IFontNamedSizeService 这曾经是获取缩放字体大小的唯一方法,但现在它内置于 Font 中。如果我们想实际向用户公开这些值,我们可以使用“字符串类型枚举”来支持系统上的其他值。我们只有 Title1,但还有 Title2 和 Title3。Device.Styles 和 ISystemResourcesProvider(“设备样式”,例如:{DynamicResource TitleStyle}) 这是获取操作系统字体样式的方法。这可能比我想象的更受欢迎,但我现在只是先行删除它。在这两种情况下(命名尺寸和设备样式),我可能会错过这里的真正用途,因此此 PR 是为了展示正在发生的事情并可以开始对话。
如果有的话,有些东西需要调整,并且不仅仅存在于 Device 类中。
命名大小注意:这些值看起来很神奇并且可以做一些事情,但是在 XAML 解析时,它们被转换为双精度值,而不知道它们是特殊值。因此,他们从未对操作系统的更改做出响应。一旦设置,它们只是一个数字,没有什么特别的
对于命名大小,我们可以让 Font 更智能,并且实际上将字符串类型的值作为字段。例如:
class Font {
double Size;
string NamedSize;
string Family;
}
Run Code Online (Sandbox Code Playgroud)
然后字体管理器可以执行如下检查:
double realSize;
if (font.NamedSize != null) {
realSize = GetSizeFromName(font.NamedSize);
} else {
realSize = font.Size * scalingFactor;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助别人:)
| 归档时间: |
|
| 查看次数: |
4725 次 |
| 最近记录: |