В помощь мобильному разработчику
Xamarin платформа

Xamarin.Forms: OnPlatform и RuntimePlatform

Александр Алексеев

Чтобы отобразить другой элемент или задать иное значение свойства используется OnPlatform или TargetPlatform enum в зависимости от того, на какой платформе ведется работа. Периодически приходится это использовать, так как элементы иногда просто недостаточно хорошо работают на двух или более платформах. Но это можно легко сделать в XAML или C# (во вспомогательном коде). Одним из наиболее распространенных примеров этого является установка верхних полей в 20 пикселей с учетом строки состояния iOS. Эти свойства слегка изменились со времен 2.3.4, и теперь рекомендуется использовать приведенные ниже вещи.

OnPlatform

OnPlatform позволяет изменять свойство в XAML в зависимости от платформы. Используя элемент OnPlatform, установите для TypeArguments фактический тип свойства, которое требуется задать, в данном случае Padding имеет тип Thickness. В элементе добавьте On и задайте свойству Platform ту платформу, которая нужна. Это строка с разделителями запятыми.

В том случае если ничего не задано, свойство не меняется и используется по умолчанию. Если требуется узнать, какие значения доступны для присвоения, можно взглянуть на класс Device и свойство RuntimePlatform.

RuntimePlatform

Device.OS и TargetPlatform enum уже устарели, и теперь рекомендуется использовать Device.RuntimePlatform. Это просто строковое значение, и в классе Device есть ряд платформ, с которыми оно сравнивается.

Просто выполните поиск класса Device с IntelliSense, чтобы найти ту платформу, которая нужна. Наиболее распространенные из них показаны на примере.

Резюме

Вообще-то, я был недоволен тем, что делаю Device.RuntimePlatform в виде строки, а не перечисления с флагами. Но, как оказалось, со строкой лучше. В этом случае теряется преимущество от наличия установленного листа поддерживаемых платформ в простом пространстве имен и приходится угадывать некоторые имена констант. Для новичков это просто еще одно препятствие, хотя ничего особо сложного здесь нет. В целом приемлемое решение. Оно задумано как простое расширение, куда в будущем можно будет легко добавить новые платформы.

 

Автор: Adam Pedley
ИсточникXamarinHelp.com

Александр Алексеев
Александр Алексеев

Xamarin - разработчик. Работаю с .NET платформой с 2012 года, программирую в основном с использованием C#. За это время успел поработать с ASP.NET, Entity Framework, MSSQL, Git

instagram ui kit

Написать ответ