我正在使用 MVVM 模式,并且想要使用可观察集合来更新 ListView。我经历了几个这样的问题,但看不出我做错了什么。任何帮助深表感谢。谢谢。
视图.xaml
命名空间:xmlns:local="clr-namespace:MusicPlayer.ViewModel"
数据上下文
<UserControl.DataContext>
<local:AllTracksViewModel/>
</UserControl.DataContext>
ListView
<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>();
}
}
我验证了项目肯定会添加到可观察对象中。
再一次感谢你的帮助。
将您的代码更改为:
public class AllTracksViewModel : INotifyPropertyChanged
{
ObservableCollection<Track> trackListObservable;
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<Track> TrackListObservable {
get { return trackListObservable; }
set {
trackListObservable = value;
if(PropertyChanged!=null) {
PropertyChanged(this, new PropertyChangedEventArgs("TrackListObservable"));
}
}
}
public AllTracksViewModel()
{
TrackListObservable = new ObservableCollection<Track>();
}
}
只是为了解释原因:ViewModel 的每个属性都应该通知其更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)