2017-07-02 3 views
0

フォームXamarinは、現在、私は次のXAMLを使用してリストビューを構築した細胞操作RTL

<ListView x:Name="_lstMenu" VerticalOptions="FillAndExpand" BackgroundColor="Transparent"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" /> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
</ListView> 

私は言語はアラビア語に切り替えられたときに全体のユーザーエクスペリエンスの右をしているされてやろうとしています左から右に向いています。これを行うために、私はRotateYTo(180)メソッドを使用しています。

protected override void rotateElementsY(int rotationY) 
{ 
    base.rotateElementsY(rotationY); 

    foreach (View sub in subviews()) 
    { 
     sub.RotateYTo(rotationY); 
    } 
} 

private View[] subviews() 
{ 
    View[] _subs = new View[] { 
     imgUser, lblGreetings, lblUserName, lstMenu, stkBottom}; 
    return _subs; 
} 

それは私が唯一の唯一の左から右方向にそれを表示することができるよとImageCellを除いて、これまでのところうまく機能、およびセルのチャイルズ(ラベル、イメージ)のいずれかを回転させることができません。

PS:リストビューをミラーリングした後、逆のセルのアラビア語テキストを書き込もうとしましたが、まだ適切ではありません。

<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> 

私はこれがことを願って:

答えて

1

答えに感謝してくれた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> 

あなたは私が項目テンプレートに別の画像を追加した、と記載されている項目オブジェクトにプロパティを毎回使用する画像やアライメントを表示することを決定するために見ることができるように。

1

私はRTL言語のための最善の解決策は、あなたが右の画像と右のアライメントとラベルを持っているときに、たとえば、カスタムセルを作成することであると思います助けます。

関連する問題