【发布时间】:2016-03-13 20:24:49
【问题描述】:
我正在使用 MVVM 模式并希望使用可观察的集合来更新 ListView。我经历了几个 SO 问题,但看不到我做错了什么。任何帮助深表感谢。谢谢。
View.xaml
命名空间:xmlns:local="clr-namespace:MusicPlayer.ViewModel"
数据上下文
<UserControl.DataContext>
<local:AllTracksViewModel/>
</UserControl.DataContext>
列表视图
<ListView x:Name="TrackListView"
ItemsSource="{Binding Path=TrackListObservable}">
...
<ListView.View>
<GridView>
<GridViewColumn Header="Title" Width="250" DisplayMemberBinding="{Binding Title}" />
<GridViewColumn Header="Album" Width="200" DisplayMemberBinding="{Binding Album}" />
<GridViewColumn Header="Artist" Width="150" DisplayMemberBinding="{Binding Artist}" />
<GridViewColumn Header="Duration" Width="100" DisplayMemberBinding="{Binding FormattedDuration}" />
</GridView>
</ListView.View>
</ListView>
ViewModel.cs
public class AllTracksViewModel
{
public ObservableCollection<Track> TrackListObservable { get; private set; }
public AllTracksViewModel()
{
TrackListObservable = new ObservableCollection<Track>();
}
}
我确认项目肯定会添加到 observable 中。 再次感谢您的帮助。
【问题讨论】:
-
您是否正确实施 INotifyPropertyChanged?
-
发布更新 observablecollection 的代码。
-
@sthotakura 我没有任何代码。我虽然该集合会自动执行此操作...
-
我的意思是您将项目添加到可观察集合的代码。
-
您不需要 INotifyPropertyChanged。你只需要绑定到正确的列表。请看下面我的回答