Hal*_*iaz 4 c# wpf listview mvvm
我正在使用MVVM模式,并希望使用可观察的集合更新ListView.我经历了几个SO问题,但看不出我做错了什么.任何帮助深表感谢.谢谢.
View.xaml
命名空间: xmlns:local="clr-namespace:MusicPlayer.ViewModel"
DataContext的
<UserControl.DataContext>
<local:AllTracksViewModel/>
</UserControl.DataContext>
Run Code Online (Sandbox Code Playgroud)
列表显示
<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>
Run Code Online (Sandbox Code Playgroud)
ViewModel.cs
public class AllTracksViewModel
{
public ObservableCollection<Track> TrackListObservable { get; private set; }
public AllTracksViewModel()
{
TrackListObservable = new ObservableCollection<Track>();
}
}
Run Code Online (Sandbox Code Playgroud)
我确认项目肯定会被添加到observable中.再一次感谢你的帮助.
将您的代码更改为:
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>();
}
}
Run Code Online (Sandbox Code Playgroud)
只是为了解释原因:ViewModel的每个属性都应该通知它的更改.
归档时间: |
|
查看次数: |
7414 次 |
最近记录: |