无法显示数据

问题描述:

我不明白为什么,但我无法在列表视图上显示数据。无法显示数据

我能做些什么?

这里是我的代码:

<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)); 
     } 
    } 
} 

}

的是一个的ItemsSource属性dependecy?或者使用INotifyPropertyChanged接口?

如果UI不被通知的数据被填充,什么都不会显示

检查this了...

+0

哦,我认为我忘了INotifyPropertyChanged!我会查一下!谢谢! – Kevser61 2013-03-07 15:07:00

当你的项目添加到List<>它不会改变 - 其内容不,但不是List本身。
将项目添加到列表中时,不会调用ListeTweet的设置程序。然而你的获得者是!

要解决您的问题,您可以将您的列表ListeTweet更改为ObservableCollection<Tweet>,这会在向您添加项目时引发OnCollectionChanged事件。