2017-03-09 53 views
0

我在嘗試簡單的事情,例如設置按鈕的列表視圖並將這些按鈕的文本綁定到列表中的元素。綁定按鈕文本到ObservableCollection

這裏是測試MainPage。

 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> 

這是做我猜常見的事?

我確實顯示了正確數量的按鈕,但沒有寫入它們。 我的問題是:我如何使按鈕的Text屬性從列表中的項目獲取名稱? 我以爲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

好的,謝謝你的輸入! –