2017-08-05 35 views
5

ContentPage我嘗試設置與平臺相關的填充值的構造函數中:Device.OnPlatform棄用

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

Visual Studio中強調Device.OnPlatform當我將鼠標指針懸停在方法調用我得到以下警告:

Devide.OnPlatform(T,T,T)已過時:'使用 switch(RuntimePlatform)而不是'。

最初使用的代碼是從e-book發表在2016年我真的很驚訝這個平臺如何快速演變「與Xamarin.Forms書創建移動應用程序」!

不幸的是,我不知道如何使用警告提示的方式替換Device.OnPlatform

+0

https://github.com/xamarin/Xamarin.Forms/pull/658 – SushiHangover

回答

11

2016年是該方法貶值的一年。

你應該使用switch語句來確定操作系統。

switch(Device.RuntimePlatform) 
{ 
    case Device.iOS: 
     return new Thickness(5, 5, 5, 0) 
    default: 
     return new Thickness(5, 5, 5, 0) 
} 

當然,你可以把這個包的功能,你想與Device.OnPlatform做這將做同樣的工作裏面,但不是調用Device.OnPlatform你會打電話給自己的函數。

+0

@GiorgosBetsos哎呀,很好找,我的道歉和感謝! – Adriani6

+1

這樣做需要更多的代碼來完成同樣的事情,但是我明白,新的設備類型添加後,更新的方法更容易擴展。 –

+1

'break'語句不需要,因爲它們從不執行。 – Encrypt0r

0
switch (Device.RuntimePlatform) 
     { 
      case Device.iOS: 
        Padding = new Thickness(5, 5, 5, 0); 
        break; 

      default: 
        Padding = new Thickness(5, 5, 5, 0); 
        break; 
     } 
0

萬一有人有同樣的問題在XAML文件,這是辦法讓過時的消息四處:

<ContentPage.Padding> 
    <OnPlatform x:TypeArguments="Thickness"> 
     <On Platform="iOs">0,20,0,0</On> 
    </OnPlatform> 
</ContentPage.Padding>