2016-09-25 3 views
0

"英語"、 "ローマ字"、 "かな"、 "漢字"の4つの行を持つ画面があります。ユーザは4つのうちの1つを選択することができ、選択されると、その隣にチェックマークが現れる。現在は(ちょうど最初の二つを示す)このように実装されます:フォームで4つの設定に対してチェックマークを表示する最適な方法は何ですか?

 englishSide.GestureRecognizers.Add(new TapGestureRecognizer 
     { 
      NumberOfTapsRequired = 1, 
      Command = new Command(() => 
      { 
       englishImage.IsVisible = true; 
       romajiImage.IsVisible = false; 
       kanaImage.IsVisible = false; 
       kanjiImage.IsVisible = false; 
      }) 
     }); 

     romajiSide.GestureRecognizers.Add(new TapGestureRecognizer 
     { 
      NumberOfTapsRequired = 1, 
      Command = new Command(() => 
      { 
       englishImage.IsVisible = false; 
       romajiImage.IsVisible = true; 
       kanaImage.IsVisible = false; 
       kanjiImage.IsVisible = false; 
      }) 
     }); 

選択肢の数が4からそれ以上に増加すると私は、これは多くのより複雑になるだろう見ることができます。これを行う最適な方法はありますか?参考のため

はここにXAMLです:

<TableSection Title="Card Front Side"> 
        <ViewCell> 
         <StackLayout x:Name="englishSide" Padding="20,0,20,0" 
           Orientation="Horizontal" VerticalOptions="Center"> 
          <Label Text="English" XAlign="Center"/> 
          <Image x:Name="englishImage" Source="check.png" 
           HorizontalOptions="EndAndExpand" IsVisible="false" /> 
         </StackLayout> 
        </ViewCell> 
        <ViewCell> 
         <StackLayout x:Name="romajiSide" Padding="20,0,20,0" 
           Orientation="Horizontal" VerticalOptions="Center"> 
          <Label Text="Romaji" XAlign="Center"/> 
          <Image x:Name="romajiImage" Source="check.png" 
           HorizontalOptions="EndAndExpand" IsVisible="false" /> 
         </StackLayout> 
        </ViewCell> 

答えて

1

あなたが必要となるかListView.ItemsSourceIEnumerable<YourViewModel>で適切なのviewmodelパターンです。私はこれを容易にするためにXamarin.FormsにPrismを使用します。

続きを読む:

YourViewModelは、子のviewmodelすべてのロジックを含むビジネス・オブジェクトをecapsulatingなります。

public class MyViewModel 
{ 
    // INotifyPropertyChanged would be needed 
    public MyModel Model {get;set;} 

    public bool IsChecked {get;set;} 

    public string Image => this.IsChecked? "theImage.jpg" : null; 
} 

希望するものがあります。

関連する問題