所以我现在正通过一本xamarin.forms书来工作,我偶然发现了这一点:
Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);
Device.OnPlatform发出过时警告。
我知道我会翻译
Padding = Device.OnPlatform(new Thickness(0,20,0,0),
new Thickness(0),
new Thickness(0));
到
switch (Device.RuntimePlatform)
{
case Device.iOS:
Padding = new Thickness(0, 20, 0, 0);
break;
};
但是这里到底发生了什么,我该如何翻译?
Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);
答案 0 :(得分:2)
具有4个new Thickness(5, 5, 5, 5);
参数的double
意味着它将创建一个新的填充(在这种情况下),左侧为5,顶部为5,右侧为5,底部为5 。因此,您只需从左到右顺时针方向从左开始。
我们看到第二个参数(因此顶部填充)将根据平台而有所不同。从我的头上,我不确定哪个参数是哪个平台,但是我猜第一个将是iOS。现在发生的是,每个平台的左侧填充为5,顶部填充为不同。对于iOS,它将是20;对于Android和UWP(请记住,只是一个猜测),它将仍然是5。然后右侧和底部的填充没有变化,因此它们仍然是5。
如果您想严格用代码来做,它可能会翻译成这样:
double topPadding = 5;
switch (Device.RuntimePlatform)
{
case Device.iOS:
topPadding = 20;
break;
default:
topPadding = 5;
break;
};
Padding = new Thickness(5, topPadding, 5, 5);
当然,您可以添加一些不同的大小写或更改值,完全由您决定。
您也可以使用XAML。然后可能看起来像这样:
<YourControl Padding="{OnPlatform '5,5,5,5', iOS='5,20,5,5'}" />
YourControl
是您要对其应用此控件的控件。 '5,5,5,5'
之后的第一个OnPlatform
值是所有未指定平台的默认值。指定了iOS,因此将使用为其指定的值。在此处阅读有关OnPlatform扩展的更多信息:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/markup-extensions/consuming#onplatform-markup-extension