【发布时间】:2012-09-12 20:25:54
【问题描述】:
我希望以优雅的方式更新我的列表视图。
这是我的代码:
ObservableCollection<Track> tracks = new ObservableCollection<Track>();
Track track = new Track();
Tracks.AddRange(track); // collection add a track, and list view updates too
Task.Factory.StartNew(() =>
track.GetInfo(); // this operation might require some times to update
// here I need to notify that my object is updated
);
如何强制更新 ObservableCollection 中的对象绑定?
这是我的 userControl.xaml
<UserControl.Resources>
<local:TimeConverter x:Key="timeConverter" />
<local:IndexConverter x:Key="indexConverter" />
<CollectionViewSource x:Key="trackList" Source="{Binding Path=TrackList.Tracks}"/>
</UserControl.Resources>
<DockPanel LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" Margin="2, 5, 2, 5">
<Button Name="btn_addtrack" Command="{Binding AddTrack}" Content="+" />
</StackPanel>
<ListView Name="lv_tracklist"
DataContext="{StaticResource trackList}"
ItemsSource="{Binding}"
>
<ListView.View>
<GridView>
<GridViewColumn Header="#" Width="20" DisplayMemberBinding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Converter={StaticResource indexConverter}}" />
<GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}"/>
<GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}"/>
<GridViewColumn Header="Length" DisplayMemberBinding="{Binding Length, Converter={StaticResource timeConverter}}" />
<GridViewColumn Header="Path" DisplayMemberBinding="{Binding Location}"/>
</GridView>
</ListView.View>
</ListView>
</DockPanel>
【问题讨论】:
-
您能否发布将
ListView绑定到tracks集合的XAML? -
Track 类是否实现了 INotifyPropertyChanged?可以发一些代码吗?
-
不,Track没有实现INotifyPropertyChanged,反正我不需要通知每个单个属性的更新。我需要在调用 track.GetInfo(); 之后更新所有属性;以上
-
您没有接受一个答案,并且根据您的 cmets,您至少有一个答案。你知道要检查答案吗?
-
不幸的是,我的声望为
标签: wpf mvvm observablecollection inotifypropertychanged model-view