首页 > 其他分享 >MAUI新生1.7-XAML语法基础:UI平台差异OnPlatform&OnIdiom

MAUI新生1.7-XAML语法基础:UI平台差异OnPlatform&OnIdiom

时间:2022-11-22 09:55:26浏览次数:47  
标签:OnPlatform 1.7 XAML UI MAUI 定制 OnIdiom 属性

MAUI支持跨平台和多设备,可以针对不同平台(Android、iOS、WinUI、MacCatalyst、Tizen),或不同设备(Phone、Tablet、Desktop、TV、Watch),定制不同的UI,应用根据运行环境,自动适应。主要通过OnPlatform和OnIdiom两个标记扩展实现。如为复杂值,可以结合On来实现。在代码层面,OnPlatform<T>为泛型类,泛型参数T为要进行跨平台定制的UI属性。OnPlatform<T>有一个属性Platforms,该属性为IList<On>类型。

 

一、定制不同平台的UI

<!--简洁用法-->
<!--扩展标记中的第一个属性为Default,可以省略-->
<BoxView
    HorizontalOptions="Center"
    Color="{OnPlatform Default=Red,Android=Blue,iOS=Pink}"
    WidthRequest="{OnPlatform 250,Android=200,iOS=300}" />

<!--复杂用法-->
<!--属性Color的值类型为Color,所以通过x:TypeArguments指定泛型为Color-->
<BoxView>
    <BoxView.Color>
        <OnPlatform x:TypeArguments="Color">
            <On Platform="Default" Value="Red"/>
            <On Platform="Android" Value="Green"/>
            <On Platform="iOS" Value="Blue"/>
        </OnPlatform>
    </BoxView.Color>
</BoxView>

 

二、定制不同设备的UI,和OnPlatform的使用基本一致,但复杂用法稍有不同。OnIdiom<T>类,直接定义了各种设备对应的属性,而OnPlatform<T>定义了一个集合属性Platforms。

<!--简洁用法-->
<!--扩展标记中的第一个属性为Default,可以省略-->
<BoxView
    HorizontalOptions="Center"
    Color="{OnIdiom Default=Red,Phone=Blue,Desktop=Pink}"
    WidthRequest="{OnIdiom 250,Phone=200,Desktop=300}" />

<!--复杂用法-->
<!--属性Color的值类型为Color,所以通过x:TypeArguments指定泛型为Color-->
<BoxView>
    <BoxView.Color>
        <OnIdiom x:TypeArguments="Color" Default="Red" Phone="AliceBlue" Desktop="Aqua"/>
    </BoxView.Color>
</BoxView>

 

三、总结:正常情况,使用大括号的标记扩展语法,表达更加简洁。

 

标签:OnPlatform,1.7,XAML,UI,MAUI,定制,OnIdiom,属性
From: https://www.cnblogs.com/functionMC/p/16914191.html

相关文章

  • MAUI新生1.6-XAML语法基础:样式风格Style&Settter
    一、样式的定义和使用Style类似于前端的CSS,可以对视觉元素的样式进行有组织的管理,大量减少代码和重复工作量。Style需要结合资源字典使用,将Style定义在资源字典中,元素通过......
  • MAUI新生1.5-XAML语法基础:资源字典ResourceDictionary
    每个派生自VisualElement或Application的对象,都有一个Resources属性,属性值为Dictionary<string,object>类型的集合对象,这些集合对象可作为资源,提供给元素及其在控件树中的......
  • Ubuntu 16.04安装Brackets 1.7失败,缺失libgcrypt11,解决办法
    Ubuntu16.04安装Brackets1.7失败,缺失libgcrypt11,解决办法mingdu.zhengatgmaildotcom问题Ubuntu16.04安装Brackets1.7失败,提示缺失libgcrypt11。sudodpkg-iBracke......
  • MAUI新生1.4-XAML语法基础:x命名空间xmlns:x
    x命名空间,又叫XAML命名空间,作用于XAML的编译过程。我们知道,XAML代码,最终通过XAML编译器,编译为中间代码IL,并与后台C#代码的编译结果合并。而在编译的过程中,经常需要告诉编译......
  • 【Xaml】WPF中Popup 实现类智能感知
    首先要做的事情就是定义一个popup来显示我们需要展示的东西<Popupx:Name="ConfigPopup"Height="auto"Width="150"StaysOpen="False"Placement="Bottom"IsOpen="Fal......
  • 场效应管SI7114DN-T1-GE3(11.7A)SM3323NHQAC-TRG(54A)MOSFET NCH 30V
    1、型号:SM3323NHQAC-TRGSM3323NHQAC描述:N沟道30V54A封装:DFN3x3D-82、型号:SI7114DN-T1-GE3SI7114DN描述:MOSFETN-CH30V11.7APPAK1212-8FET类型:N通道技术:MOSFET(金......
  • 在WPF中将XAML表格文档转换为PDF文件导出
    摘要编写文档模板页面1、新建Page页面,将顶部节点更改为FlowDocument,后台代码不需要,可直接删掉2、实现一个表格页面直接上代码,自己看,其中需要注意的是,如果非静态页面......
  • MAUI新生1.3-XAML语法基础:标记扩展原理
    标记扩展,本质上是IMarkupExtension或者IMarkupExtension<T>接口的实现类。这两个接口,均定义了ProvideValue方法。注意,IMarkupExtension<T>继承自IMarkupExtension,如果定义......
  • MAUI新生1.2-XAML语法基础:标记扩展{}
    标记扩展,使属性值可以引用其他源的值或对象,比如引用资源字典、引用其它控件的属性值、绑定ViewModel类属性值等。标记扩展的语法有大括号{}和尖括号<>两种方式,但x:Array比......
  • 11.7-11.11 周末小结
    目录一、面向对象三大特性之封装1.封装简介:2.隐藏3.伪装二、面向对象三大特性之多态1.多态的含义2.抽象与多态三、面向对象之反射1.hasattr(object,name)2.getattr(object......