2013-09-06 5 views
1

Чтобы решить проблему CollectionViewSource на WinRT, Android, iPhone, я решил написать альтернативу, существующую в модели представления.INotifyCollectionChanged и Windows 8

Это прекрасно работает на Windows Phone, но на WinRT CollectionChanged событие никогда ничего, кроме null поэтому сбор в коем случае не нагрузки (если вы не вернуться обратно со страницы, а затем к нему еще раз, но это потому, что вид модели хранятся в состоянии).

Исходный код здесь: https://gist.github.com/jamie94bc/6262479

Спасибо!

В Модельное

private ObservableCollection<Task> _col; 
private CollectionViewSource<Task> _colView; 

public ObservableCollection<Task> Col { 
    get { return _col ?? (_col = new ObservableCollection<T>()); } 
} 

public CollectionViewSource<Task> ColView { 
    get { return _colView ?? (_colView = new CollectionViewSource<Task>(this.Col, x => x.IsComplete, new SortDescription<Task>(x => x.Created))); } 
} 

В XAML

<ListView ItemsSource="{Binding ColView}"></ListView> 

ответ

1

Ответ в основном в том, чтобы выставить свойство вида (как ObservableCollection<T>) на CollectionViewSource реализации.

CollectionViewSource затем модифицирует View, а реализует INotifyCollectionChanged и IEnumerable.

Оказывается INotifyCollectionChanged был фактически заменен IObservableVector в Windows 8, и в первые предварительные просмотры ObservableCollection не работает вообще - я полагаю, что есть что-то происходит за кулисами в Windows 8, которая имеет дело с ObservableCollection с, но не INotifyCollectionChanged ,

Смежные вопросы