Device.OS в Xaml в Xamarin.Forms - PullRequest
0 голосов
/ 03 июля 2018

Как написать (Device.OS == TargetPlatform.Android) в xaml,

В моем файле класса я создал это в c #, но я не знаю, как написать это в xaml,

  if (Device.OS == TargetPlatform.Android) 
  {
        var stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.Center,
        };
         var label = new Label()
        {
            Content = "This design is for Android"
        };
        stack.Children.Add(label);       

    };

    if (Device.OS == TargetPlatform.iOS)
    {
        var grid = new Grid()
        {
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.CenterAndExpand
        };
        var label = new Label()
        {
            Content = "This design is for IOS"
        };
        grid.Children.Add(label);
    }

Пожалуйста, помогите мне, как написать этот два разных дизайна в Android и IOS в XAML.

1 Ответ

0 голосов
/ 03 июля 2018

Насколько я знаю, это невозможно в XAML, по крайней мере, не так. На ум приходят два варианта:

Создайте две страницы в XAML, одну для Android и одну для iOS, и нажмите нужную страницу в зависимости от платформы, в основном с помощью if из вашего кода.

Или реализовать что-то подобное на одной странице:

<StackLayout>
    <StackLayout.IsVisible>
        <OnPlatform x:TypeArguments="x:Boolean">                   
            <OnPlatform.iOS>false</OnPlatform.iOS>           
            <OnPlatform.Android>true</OnPlatform.Android>           
         </OnPlatform>
    </StackLayout.IsVisible>
</Stacklayout>

А для сетки наоборот. Примечание: последнее может негативно повлиять на ваш макет

PS. Device.OS устарела, вы должны использовать Device.RuntimePlatform сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...