2017-03-09 9 views
0

ボタンのリストビューを設定し、これらのボタンのテキストをリストの要素にバインドするなど、簡単なことを試しています。ボタンのテキストをObservableCollectionにバインドする

ここはテスト用のメインページです。

 public MainPage() 
    { 
     InitializeComponent(); 


     ObservableCollection<Lot> lotList = new ObservableCollection<Lot>(); 

     lotList.Add(new Lot(1)); 
     lotList.Add(new Lot(2)); 
     lotList.Add(new Lot(3)); 
     lotList.Add(new Lot(4)); 
     lotList.Add(new Lot(5)); 

     this.BindingContext = lotList; 
    } 

非常に厳しいですが、項目のリストを作成して項目を追加しています。

XAMLは次のようになります。

  <ListView x:Name="lotListView" HorizontalOptions="Center" ItemsSource="{Binding}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <Button Text="{Binding}"/> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

私は推測行うための一般的なものはどれ?

私は正しい量のボタンが表示されていますが、何も書かれていません。 私の質問は:どのようにボタンのテキストプロパティは、リスト内の項目から名前を取得することができますか? ToStringメソッドが呼び出されたと思われますが、そうではありません。

ロットクラスに、要求通り:

public class Lot 
{ 
    private int id { get; set; } 
    public String Name { get; set; } 

    public Lot(int id) 
    { 
     this.id = id; 
     this.Name = "Lot n° " + id.ToString(); 
    } 
} 
+0

私たちにロットモデルを教えてもらえますか? – mindOfAi

+0

私はちょうど、興味がありがとう! –

答えて

1

何ができるかは{Binding}

{Binding Name}から
<ListView x:Name="lotListView" HorizontalOptions="Center" ItemsSource="{Binding}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <Button Text="{Binding Name}"/> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

を変更され、それがお役に立てば幸い!

+0

ありがとう、それは動作します。私はそれを答えとしてマークします。 このタイプのバインディングが「最良の」方法であると思いますか? –

+0

誰もが、より多くの文脈なしに「最良の」質問に答えることはできませんが、あなたが持っているものは、完全に正常なパターンであり、うまくいきます。 – Jason

+0

あなたのご意見ありがとうございます! –

関連する問題