Направление потока не работает с IOS при использовании преобразователей - PullRequest
0 голосов
/ 31 мая 2018

Использование форм xamarin V 3.0.0.482510

Я изменяю направление потока на странице Xaml с помощью конвертера. Это происходит при изменении Current.Culture.IsRightToLeft.

В Android работает нормально именяет направление, но в IOS направление всегда слева направо.

XamlPage:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             x:Class="MEGA.Views.StartNow" 
             NavigationPage.HasNavigationBar="False" 
             BackgroundColor="#941a24" 
             xmlns:local="clr-namespace:MEGA.Converters"
             FlowDirection="{Binding RTL,Converter={StaticResource BoolToString}}" >
    <!-- RTL is a boolean property contains the IsRightToLeft value -->
    <ContentPage.Resources>
        <ResourceDictionary>
            <local:BooleanToString x:Key="BoolToString" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <ContentPage.Content>
        <StackLayout Margin="30,0,30,50">

            <Label Text="This Is a Test Text"/>

        </StackLayout>
    </ContentPage.Content>
</ContentPage> 

А вот и метод Convert

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if ((bool)value == true)
        return "RightToLeft";
    else
        return "LeftToRight";
}

У меня естьсомневаюсь, что конвертер или статический ресурс как-то не работает в проекте ios, потому что когда я устанавливаю направление потока

FlowDirection=RightToLeft

вручную, направление меняется.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Так как FlowDirection не является строкой, вам нужно изменить ваш конвертер на:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if ((bool)value == true)
        return FlowDirection.RightToLeft;
    else
        return FlowDirection.LeftToRight;
}

Тогда ваше связывание и конвертер будут работать на iOS.

0 голосов
/ 01 июня 2018

Направление FlowDirection - это перечисление.Верните желаемое перечисление вместо строки.См https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.flowdirection?view=xamarin-forms и здесь https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/FlowDirection.cs

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