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

}

4

2 回答 2

0

ItemsSource 是依赖属性吗?还是使用 INotifyPropertyChanged 接口?

如果 UI 没有收到数据填充的通知,则不会显示任何内容

看看这个...

于 2013-03-07T15:04:55.593 回答
0

当您向 a 添加项目时,List<>它不会改变 - 它的内容会改变,但List本身不会改变。
当您将项目添加到列表时,ListeTweet不会调用 setter。但是,您的吸气剂是!

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

于 2013-03-07T15:37:48.187 回答