gpt4 book ai didi

wpf - 对象更新后通知 PropertyChanged

转载 作者:行者123 更新时间:2023-12-03 10:52:57 37 4
gpt4 key购买 nike

我希望以一种优雅的方式更新我的 ListView 。

这是我的代码:

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 中的对象绑定(bind)?

这是我的 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>

最佳答案

如果您反对实现 INotifyPropertyChanged,您可以将绑定(bind)设置为 null 然后重新绑定(bind),但这不是我推荐的。

请参阅此答案以通知所有人

notify-all-properties-of-the-view-model-has-changed

除非您要更改所有属性,否则我会选择 Miklos 的答案。 NotifyPropertyChanged 有开销。

推荐图案

   private string prop1

Public string Prop1
{
get { return prop1; }
set
{
if (prop1 == value) return;
prop1 = value;
NotifyProperyChanged("Prop1");
}
{

是的代码行,但随后 UI 只描绘了已更改的内容。

我刚刚看到您的问题和评论的更新。
对 ALL 的更新是对每个属性的更新。
UI 在属性级别接收通知。
您只有 5 个属性。

关于wpf - 对象更新后通知 PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513166/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com