2017-08-10 66 views
1

,所以我得到一個問題結合項目的ListView不能Xamarin窗體上綁定的ObservableCollection到的ListView

初始化頁面

public HomePage() 
    { 
     Acquaintances = Add(); 
     //InitializeToolbar(); 
     InitializeComponent(); 

    } 
private ObservableCollection<Acquaintance> Add() 
    { 
     return new ObservableCollection<Acquaintance>() 
     { 

     new Acquaintance(){.....} 

在XAML

<ListView x:Name="lstUser" BackgroundColor="White" ItemsSource="{Binding Acquaintances}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="100"></ColumnDefinition> 
          <ColumnDefinition Width="*"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 

         <Grid Grid.Column="0"> 
          <ImageCell ImageSource="{Binding PhotoUrl}" Height="50"></ImageCell> 

         </Grid> 

         <StackLayout Grid.Column="1" Padding="5"> 
          <Label Text="{Binding FirstName}" FontSize="15" TextColor="Black"></Label> 
          <Label Text="{Binding City}" FontSize="10" TextColor="Black"></Label> 
          <Label Text="{Binding JobTitle}" FontSize="10" TextColor="#CCCCCC"></Label> 
         </StackLayout> 

        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

ListView控件不能綁定熟人ListView的項目源。哪裏錯了?

在頁:

public ObservableCollection<Acquaintance> Acquaintances { get; } 
+0

你有沒有設置BindingContext? – Jason

+0

是的,我試過了。 –

+0

BindingContext =熟人; –

回答

2

您似乎忘記設置你的頁面上的BindingContext財產。沒有設置該屬性,該頁面不知道從哪裏獲取數據。

要設置上下文本身,像這樣做:

public HomePage() 
{ 
    Acquaintances = Add(); 
    //InitializeToolbar(); 
    InitializeComponent(); 

    BindingContext = this; // Note that I added this line 
} 

在你問的意見,當你設置BindingContext = Acquaintances;和失敗的原因爲什麼當你設置BindingContext = this;它的工作原理。

很簡單,將BindingContext設置爲您要訪問的對象持有屬性。通過將上下文設置爲this(本例中爲HomePage),可以使用綁定,例如{Binding Acquaintances}。因爲AcquaintancesHomePage的財產。

如果將BindingContext設置爲特定的屬性,該屬性也可以是複雜類型,但不一定是,則更改範圍。因此,當您將BindingContext設置爲Acquaintances時,您必須將列表中的ItemsSource更改爲{Binding .}。點表示它將使用BindingContext本身中的對象,而不是其中的屬性。

+0

BindingContext =熟人; =>失敗 BindingContext = this; =>成功 爲什麼? –

+0

更新了答案,我希望它能爲你澄清一點。如果有幫助,請不要忘記接受它。 –

相關問題