- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我现在正在阅读一本 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);
最佳答案
具有 4 个 double
参数的 new Thickness(5, 5, 5, 5);
意味着它将创建一个新的填充(在本例中),其中包含 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
是您要应用它的控件。 OnPlatform
之后的第一个 '5,5,5,5'
值是所有未指定平台的默认值。 iOS 已指定,因此将使用为其指定的值。在此处阅读有关 OnPlatform 扩展的更多信息:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/xaml/markup-extensions/consuming#onplatform-markup-extension
关于c# - 如何用 Device.OnPlatform 翻译这个 Padding? (iOS 案例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53479248/
我正在使用 Xamarin.Forms 进行编程。我想知道如何仅设置单个平台的高度请求,使用 OnPlatform在 XAML 中?我想保留默认值 -1如果平台没有被引用。 我目前有以下代码:
我有这种风格: 我想包括这一点。可能吗? 最佳答案 使用新的 Xamarin OnPlatform s
在我的 ContentPage 的构造函数中我尝试设置一个平台相关的填充值: Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5)
我需要根据我的应用程序的语言绑定(bind)到不同的属性。我想通过 XAML 来做到这一点,并受到了 OnPlatform/OnIdiom 的启发。 所以我创建了类似 OnIdiom 的东西,但用于语
我有以下 C# 代码: var footer = new StackLayout() { BackgroundColor = Device.OnPlatform(Color.F
我有几节的TableView。在我的TableSection中,我想根据平台显示不同的控件。我想为iOS使用常规的TextCell,为Android使用自定义的ViewCell。我尝试了以下代码:
我正在尝试根据正在运行的设备更改条目的背景。 我尝试根据以下信息进行操作:https://developer.xamarin.com/guides/xamarin-forms/xaml/passing
我想做的事情可能看起来很简单,但我一直在寻找大约一个小时,但到目前为止没有运气。 我有以下 XAML
我正在使用 Xamarin Studio 6.1,最近升级它以使用 Xamarin Forms 项目。我似乎无法使用 OnPlatform 标签。我正在尝试这样的事情
在 Xamarin.Forms 3.2.0 中,Xamarin Forms 引入了新的 OnPlatform/OnIdiom XAML 扩展 根据 blog我们可以重写下面的代码,
所以我有选择器,我想将它的标题绑定(bind)到 ThemePickerTitle 属性。如果我将它写成内联属性,它会很好用。但我不想在 Wi
以前我能做这样的事情 现在,该语法已被弃用,我正在尝试这样做: {StaticResource Primary} 但我收到以下错误: Cannot convert "{StaticReso
我有这个代码: ...并得到这个错误: No property, bindable property, or event found fo
我目前正在做一个实习项目,需要我使用一个过时的项目。我仍在尝试构建项目,消除了所有错误,但现在这些过时行的警告不允许我通过。 我有以下错误: Warning CS0618 'Device.OnPlat
所以我现在正在阅读一本 xamarin.forms 的书,我遇到了这个: Padding = new Thickness(5, Device.OnPlatform(20, 5, 5), 5, 5);
对于 UWP,我需要为 Grid 中的列宽度设置不同的大小。此外,平板电脑和智能手机上的值应该不同。 以下代码使应用程序崩溃
我正在尝试在 Xaml 中的不同平台上呈现设备特定 View 。 查看this link我可以看到我可以在 Xaml 中使用 Device.OnPlatform 设置属性,如下所示: 12 12
我是一名优秀的程序员,十分优秀!