是否有一个具有以下特征的集合(BCL或其他):
如果更改集合则发送事件如果集合中的任何元素发送事件,则发送PropertyChanged事件.排序的ObservableCollection<T>位置T: INotifyPropertyChanged和集合也监视元素的变化.
我可以自己包装一个可观察的集合,并在添加/删除集合中的元素时进行事件订阅/取消订阅,但我只是想知道现有的集合是否已经这样做了?
是否有任何方法可以自动更新过滤器,ICollectionView而无需Refresh()在进行相关更改时进行调用?
我有以下内容:
[Notify]
public ICollectionView Workers { get; set; }
Run Code Online (Sandbox Code Playgroud)
此属性中的[Notify]属性刚刚实现,INotifyPropertyChanged但在这种情况下它似乎没有做任何事情.
Workers = new CollectionViewSource { Source = DataManager.Data.Workers }.View;
Workers.Filter = w =>
{
Worker worker = w as Worker;
if (w == null)
return false;
return worker.Employer == this;
};
Run Code Online (Sandbox Code Playgroud)
在XAML中:
<TextBlock x:Name="WorkersTextBlock"
DataContext="{Binding PlayerGuild}"
FontFamily="Pericles"
Text="{Binding Workers.Count,
StringFormat=Workers : {0},
FallbackValue=Workers : 99}" />
Run Code Online (Sandbox Code Playgroud)
更新:看起来使用ICollectionView对我来说是必要的,所以我想重新审视这个主题.我正在为这个问题添加一笔赏金,其收件人将是任何能够提供有关如何实现ICollectionView不需要手动刷新的"不干涉"的洞察力的人.在这一点上,我对任何想法持开放态度.