C# Xamarin形成细胞操纵RTL
目前,我已经使用以下XAML构建了一个列表视图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
<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>
如您所见,我已将另一个图像添加到项目模板,并将属性添加到列出的项目对象,以决定每次显示要使用的图像和对齐方式