C# Xamarin形成细胞操纵RTL

C# Xamarin形成细胞操纵RTL,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,目前,我已经使用以下XAML构建了一个列表视图 <ListView x:Name="_lstMenu" VerticalOptions="FillAndExpand" BackgroundColor="Transparent"> <ListView.ItemTemplate> <DataTemplate> <ImageCell Text="{Binding T

目前,我已经使用以下XAML构建了一个列表视图

<ListView x:Name="_lstMenu" VerticalOptions="FillAndExpand" BackgroundColor="Transparent">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" />
                </DataTemplate>
            </ListView.ItemTemplate>
</ListView>
到目前为止,它工作得很好,除了ImageCell,因为我只能从左到右显示它,并且无法旋转任何单元格的子对象(标签、图像)


PS:镜像列表视图后,我也尝试将单元格的阿拉伯文本反向写入,但看起来仍然不合适。

我认为RTL语言的最佳解决方案是,当图像在右侧,然后标签对齐在右侧时,创建自定义单元格,例如:

<ListView
    x:Name="_lstMenu"
    BackgroundColor="Transparent"
    VerticalOptions="FillAndExpand">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="4*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Label
                        HorizontalTextAlignment="End"
                        Text="{Binding Title}"
                        VerticalTextAlignment="Center" />
                    <Image Grid.Column="1" Source="{Binding Image}" />
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>


我希望这能对您有所帮助。

我认为RTL语言的最佳解决方案是,当图像在右侧,然后标签对齐时,创建一个自定义单元格,例如:

<ListView
    x:Name="_lstMenu"
    BackgroundColor="Transparent"
    VerticalOptions="FillAndExpand">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="4*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <Label
                        HorizontalTextAlignment="End"
                        Text="{Binding Title}"
                        VerticalTextAlignment="Center" />
                    <Image Grid.Column="1" Source="{Binding Image}" />
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>


我希望这能对你有所帮助。

感谢甘志图55激励我找到我需要的答案。我几乎使用了他制作RTL的想法,但在需要时也可以转换为LTR

<ListView x:Name="_lstMenu" VerticalOptions="FillAndExpand" BackgroundColor="Transparent">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="6*"/>
                            <ColumnDefinition Width="2*"/>
                        </Grid.ColumnDefinitions>
                        <Image Source="{Binding IconSource}" IsVisible="{Binding isEnglish}"/>
                        <Label Grid.Column="1" Text="{Binding Title}" VerticalTextAlignment="Center" HorizontalTextAlignment="{Binding alignment}"/>
                        <Image Grid.Column="2" Source="{Binding IconSource}" IsVisible="{Binding isArabic}"/>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
</ListView>


如您所见,我已将另一个图像添加到项目模板中,并将属性添加到列出的项目对象中,以决定每次显示要使用的图像和对齐方式。

感谢ganchito55启发我找到所需的答案。我几乎使用了他制作RTL的想法,但在需要时也可以转换为LTR

<ListView x:Name="_lstMenu" VerticalOptions="FillAndExpand" BackgroundColor="Transparent">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="2*"/>
                            <ColumnDefinition Width="6*"/>
                            <ColumnDefinition Width="2*"/>
                        </Grid.ColumnDefinitions>
                        <Image Source="{Binding IconSource}" IsVisible="{Binding isEnglish}"/>
                        <Label Grid.Column="1" Text="{Binding Title}" VerticalTextAlignment="Center" HorizontalTextAlignment="{Binding alignment}"/>
                        <Image Grid.Column="2" Source="{Binding IconSource}" IsVisible="{Binding isArabic}"/>
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
</ListView>

如您所见,我已将另一个图像添加到项目模板,并将属性添加到列出的项目对象,以决定每次显示要使用的图像和对齐方式