• Xamarin.Forms 通用类库中平台差异属性设置方法


    静态Device类包含几个属性和方法,这些属性和方法使您的代码可以在运行时以非常简单明了的方式处理设备差异:

    1. Device.OS属性返回TargetPlatform枚举的成员:iOS,Android,WinPhone或Other。 WinPhone成员指所有Windows和Windows Phone平台。

    2. Device.Idiom属性返回TargetIdiom枚举的成员:Phone,Tablet,Desktop或Unsupported。

    您可以在if和else语句或switch and case块中使用这两个属性来执行特定于特定平台的代码。

    另外Device类还提供了两个名称为 OnPlatform方法提供了更为优雅的解决方案:

    1. 静态泛型方法OnPlatform <T>接受三个类型T的参数(第一个用于iOS,第二个用于Android,第三个用于Windows Phone(包括所有Windows平台)),并返回运行平台的参数。

    2. 静态方法OnPlatform有四个Action类型的参数(没有参数并返回void的.NET函数委托),顺序也是iOS、Android和Windows Phone,第四个参数是默认值,并为运行的平台执行该参数。

    您可以通过使用Device.OnPlatform<T>泛型方法将Padding限制为仅用于iPhone,而不是在所有三个平台上都设置相同的Padding属性。

    1 Thickness Padding = Device.OnPlatform<Thickness>(new Thickness(0, 20, 0, 0), 
    2                                                  new Thickness(0), 
    3                                                  new Thickness(0));

    或者,您可以只有一个Thickness构造函数,并使用Device.OnPlatform作为第二个参数:

    1 Padding = new Thickness(0, Device.OnPlatform(20, 0, 0), 0, 0);

    但是,如果只需要为 iOS 设置 Padding,可以使用 Device.OnPlatform 的版本和 Action 参数。默认情况下,这些参数都是 null,所以你可以设置 iOS 上要执行的操作的第一个参数:

     1 public class GreetingsPage : ContentPage 
     2 { 
     3       public GreetingsPage() 
     4       { 
     5              Content = new Label 
     6              {
     7                       Text = "Greetings, Xamarin.Forms!" 
     8              }; 
     9             Device.OnPlatform(() => { 
    10                                  Padding = new Thickness(0, 20, 0, 0); 
    11                                  }); 
    12         } 
    13 }

    现在,仅当程序在iOS上运行时才执行设置填充的语句。 当然,仅使用Device.OnPlatform的一个参数,对于需要阅读代码的人来说可能有点晦涩,因此您可能希望在参数之前包含参数名称,以明确表明此语句仅针对 iOS:

    1 Device.OnPlatform(iOS: () => { 
    2                               Padding = new Thickness(0, 20, 0, 0); 
    3                               });

    像这样命名参数是C#4.0中引入的功能。

  • 相关阅读:
    Word Embedding理解
    几种简单的主题模型(生成模型)
    BTM学习小记
    LDA学习小记
    word2vec训练好的词向量
    java带字符编码编译
    web安全领域常见的攻击方式
    宝塔webhook布置gitee自动同步服务端
    unity3d学习路线
    缩略图含裁剪文件
  • 原文地址:https://www.cnblogs.com/bisslot/p/13393369.html
Copyright © 2020-2023  润新知