2013-01-10 131 views
0

我在寫簡單的WPF Application,我想用ListView來顯示List的項目。我的代碼是:ListView數據綁定

WPF.xaml

<ListView Grid.Column="0" Grid.Row="1" Margin="10,0,10,5" ItemsSource="{Binding MyCollection.Elements}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding ElementDescriptions}" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

WPF.xaml.cs

public MyViewModel ViewModel 
    { 
     get { return DataContext; } 
     set { DataContext = value; } 
    } 

MyViewModel.cs

public OwnedCollection Elements { get; set; } 

OwnedCollection.cs

public List<ElementDescriptions> ElementDescriptions { get; set; } 

我100%肯定,ViewViewModel之間的通信是正確的,因爲顯示簡單的消息並沒有讓我煩惱。我在做ListView的正確綁定嗎?

+0

此行'的ItemsSource = 「{結合MyCollection.Elements}'什麼,當你將其更改爲'發生的ItemsSource =」{結合MyCollection的}'也想知道如果OwnedCollection應改用的ObservableCollection .. – MethodMan

+0

什麼都沒有 - 名單仍然是空的。依然沒有。 – Fka

+0

我已經將List 更改爲ObservableCollection Fka

回答

0

有兩件事情:

首先,

TextBlock Text="{Binding ElementDescriptions}" 

不使一個很大的意義,因爲ElementDescriptions是一個集合。如果你通過你的列表,你真正應該結合ListView控件來ElementDescriptions的的ItemSource然後訪問ElementDescriptions類的一些文字財產全部ElementDescriptions要循環:

<ListView Grid.Column="0" Grid.Row="1" Margin="10,0,10,5" ItemsSource="{Binding MyCollection.ElementsElementDescriptions }"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding ElementDescriptions.SomeTextField}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

其次,你使用INotifyPropertyChanged的這樣的觀點知道更新?在這裏更多信息:OnPropertyChanged with a List