2013-03-07 218 views
0

我不明白爲什麼,但我無法在列表視圖上顯示數據。無法顯示數據

我能做些什麼?

這裏是我的代碼:

<FlipView HorizontalAlignment="Left" Margin="209,52,0,0" 
      VerticalAlignment="Top" Width="892" Height="432" Grid.Row="1"> 
    <ListView HorizontalAlignment="Left" Height="426" 
       VerticalAlignment="Top" Width="453" 
       Margin="433,0,0,0" DataContext="TwitterDataViewModel" 
       ItemsSource="{Binding ListeTweet}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" Height="132"> 
        <Image Source="{Binding ImageUrl}" Height="73" 
          Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/> 
        <StackPanel Width="370"> 
         <TextBlock Text="{Binding Name}" Foreground="#FFC8AB14" 
            FontSize="28" /> 
         <TextBlock Text="{Binding Text}" TextWrapping="Wrap" 
            FontSize="24" /> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
</FlipView> 

這是怎麼回事?


我我TwitterDataViewModel後一看,這是一個INotifyPropertyChanged的類...

namespace App1 
{ 
public class TwitterDataViewModel : INotifyPropertyChanged 
{ 
    private User _user; 
    public User User 
    { 
     get { return _user; } 
     set 
     { 
      _user = value; 
      RaisePropertyChanged("User"); 
     } 
    } 

    private List<Tweet> _listeTweet; 
    public List<Tweet> ListeTweet 
    { 
     get { return _listeTweet; } 
     set 
     { 
      _listeTweet = value; 
      RaisePropertyChanged("ListeTweet"); 
     } 
    } 
    private List<User> _listeUser; 
    public List<User> ListeUser 
    { 
     get { return _listeUser; } 
     set 
     { 
      _listeUser = value; 
      RaisePropertyChanged("ListeUser"); 
     } 
    } 



    private List<NameValueItem> _listeDonneesGraphiques; 
    public List<NameValueItem> ListeDonneesGraphiques 
    { 
     get { return _listeDonneesGraphiques; } 
     set 
     { 

      _listeDonneesGraphiques = value; 
      RaisePropertyChanged("ListeDonneesGraphiques"); 
     } 
    } 

    public TweetViewModel tweetviewmodel { get; set; } 
    public UserViewModel userviewmodel { get; set; } 

    public TwitterCommand<object> ClickSearch { get; set; } 

    readonly Page page; 

    public TwitterDataViewModel(Page page) 
    { 
     tweetviewmodel = new TweetViewModel(page); 
     userviewmodel = new UserViewModel(page); 
     this.page = page; 
     ClickSearch = new TwitterCommand<object>(AfficheDonnee); //bouton NEXT 

    } 

    void AfficheDonnee(object obj)      //Méthode qui sera exécutée lors du click sur le bouton NEXT 
    {   
            //Consiste à afficher les données précédemment récupérées. 

     ListeTweet = tweetviewmodel.RecupererTweets(); //ok ca fonctionne 
     //tweetviewmodel.TrouverMot(); 
     //tweetviewmodel.TrouverTweetSpecific(); 
     //Task.Run(async() => 
     //{ 
     // //je fais une tâche et j'attend 15 minutes 
     // userviewmodel.GetScreenName(); 
     // await Task.Delay(15 * 600);//15 minutes 

     //}); 

     //Task.Run(() => 
     //{ 

     // userviewmodel.GetScreenName(); 


     //}); 

     //User = userviewmodel.RecupererInfoUser(); 
     // ListeUser = userviewmodel.GetScreenName(); 
     //ListeDonneesGraphiques = new List<NameValueItem>(); //Liste des données numérique qui va servir pour le graphique de données 
     //tweetviewmodel.TrouverMot();             //Problème à l'affichage 

     //ListeDonneesGraphiques.Add((new NameValueItem() { Name = "Tweets", Value = userviewmodel.Users.NbStatus })); 
     //ListeDonneesGraphiques.Add((new NameValueItem() { Name = "Following", Value = userviewmodel.Users.NbFollowing })); 
     //ListeDonneesGraphiques.Add((new NameValueItem() { Name = "Followers", Value = userviewmodel.Users.NbFollowers })); 
     //ListeDonneesGraphiques.Add((new NameValueItem() { Name = "Favorite", Value = userviewmodel.Users.NbFavorite })); 
     //ListeDonneesGraphiques.Add((new NameValueItem() { Name = "Listed", Value = userviewmodel.Users.NbListe })); 
    } 


    public event PropertyChangedEventHandler PropertyChanged; 
    private void RaisePropertyChanged(string prop) 
    { 
     var handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(prop)); 
     } 
    } 
} 

}

回答

0

的是一個的ItemsSource屬性dependecy?或者使用INotifyPropertyChanged接口?

如果UI不被通知的數據被填充,什麼都不會顯示

檢查this了...

+0

哦,我認爲我忘了INotifyPropertyChanged!我會查一下!謝謝! – Kevser61 2013-03-07 15:07:00

0

當你的項目添加到List<>它不會改變 - 其內容不,但不是List本身。
將項目添加到列表中時,不會調用ListeTweet的設置程序。然而你的獲得者是!

要解決您的問題,您可以將您的列表ListeTweet更改爲ObservableCollection<Tweet>,這會在向您添加項目時引發OnCollectionChanged事件。