Compartir a través de


Orden de lectura de InputView en Windows

Esta característica específica de la Plataforma universal de Windows específica permite detectar dinámicamente el orden de lectura (de izquierda a derecha o de derecha a izquierda) de texto bidireccional en instancias de Entry, Editor y Label. Se consume en XAML estableciendo la propiedad adjunta InputView.DetectReadingOrderFromContent (para las instancias Entry y Editor) o Label.DetectReadingOrderFromContent en un valor boolean:

<ContentPage ...
             xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        <Editor ... windows:InputView.DetectReadingOrderFromContent="true" />
        ...
    </StackLayout>
</ContentPage>

Como alternativa, se puede consumir desde C# mediante la API fluida:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
...

editor.On<Windows>().SetDetectReadingOrderFromContent(true);

El método Editor.On<Windows> especifica que esta característica especifica de la plataforma solo se ejecutará en la Plataforma universal de Windows. El método InputView.SetDetectReadingOrderFromContent, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.WindowsSpecific, se usa para controlar si se detecta el orden de lectura a partir del contenido en InputView. Además, se puede usar el método InputView.SetDetectReadingOrderFromContent para alternar si se detecta el orden de lectura a partir del contenido, llamando al método InputView.GetDetectReadingOrderFromContent para que devuelva el valor actual:

editor.On<Windows>().SetDetectReadingOrderFromContent(!editor.On<Windows>().GetDetectReadingOrderFromContent());

El resultado es que el orden de lectura de las instancias de Entry, Editor y Label se puede detectar dinámicamente:

InputView detecta el orden de lectura desde el contenido específico de la plataforma

Nota:

A diferencia de la configuración de la propiedad FlowDirection, la lógica de las vistas que detectan el orden de lectura a partir de su contenido de texto no afectará a la alineación del texto dentro de la vista. En su lugar, ajusta el orden en el que se diseñan bloques de texto bidireccional.