【发布时间】:2019-05-20 08:07:12
【问题描述】:
当我直接绑定到 EventsSource 时它可以工作,但当我将绑定更改为 EventsView 时它就不行了。
// EventsControl class
private bool Filter(object obj)
{
if (!(obj is Event @event)) return false;
if (string.IsNullOrEmpty(Location)) return true;
return true;
// return @event.Location == Location;
}
public static readonly DependencyProperty EventsSourceProperty = DependencyProperty.Register(
nameof(EventsSource), typeof(ObservableCollection<Event>), typeof(EventsControl), new PropertyMetadata(default(ObservableCollection<Event>), EventsSourceChanged));
public ObservableCollection<Event> EventsSource
{
get => (ObservableCollection<Event>)GetValue(EventsSourceProperty);
set => SetValue(EventsSourceProperty, value);
}
public ICollectionView EventsView { get; set; }
private static void EventsSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (!(d is EventsControl eventsControl)) return;
var view = new CollectionViewSource { Source = e.NewValue }.View;
view.Filter += eventsControl.Filter;
eventsControl.EventsView = view;
//view.Refresh();
}
这段代码有什么问题?
我不想使用默认视图 ( WPF CollectionViewSource Multiple Views?)
【问题讨论】:
-
eventSource 属性正在通知订阅者 - 我不确定其他属性是否会发生这种情况