ObservableQuery для Silverlight? - PullRequest
       2

ObservableQuery для Silverlight?

2 голосов
/ 28 декабря 2010

Использование ObservableCollection s с Silverlight прекрасно работает, потому что пользовательский интерфейс автоматически обновляется при изменении данных. Но что, если я отображаю целый ряд разных представлений данных, представленных в виде разных IEnumerable запросов LINQ? Мой нынешний подход заключается в том, чтобы DataContext реализовать INotifyPropertyChanged, зарегистрироваться для события вспомогательных коллекций CollectionChanged и соответственно запустить событие изменения свойства.

Однако, это своего рода повторение, чтобы делать это снова и снова. Что я действительно хочу, так это ObservableQuery, который сочетает в себе запрос и наблюдаемый источник данных. Это уже существует? Если нет, что мне нужно делать, когда я перевожу свой собственный на Silverlight, чтобы обращаться с ним так же, как с ObservableCollection? Достаточно ли иметь CollectionChanged событие?

(меня больше всего интересует Silverlight для Windows Phone 7.)

1 Ответ

1 голос
/ 28 декабря 2010

То, что вы описываете, на самом деле не существует как таковое, но если вы передадите свой IEnumerable<xx> в CollectionViewSource (правка), вы можете получить некоторые из описанных функций.Это, однако, не очень хорошо сочетается с шаблоном типа ViewModel, поскольку вам нужно вручную тянуть некоторые конечные элементы, чтобы он работал.

Другой вариант - быстро взглянуть на Reactive Framework. В настоящее время это CTP (или, возможно, бета), но также реализовано для SilverLight.Это дает вам LINQ-запрос IObservable<xx> Observable Stream или Collection (не путать с ObservableCollection), который по сути является асинхронной «push» версией IEnumerable.

Очень хорошо работает при медленной загрузке данных в пользовательский интерфейс в течение длительного периода времени.Вы можете, например, преобразовать события в наблюдаемый поток и начать свой запрос LINQ оттуда и т. Д.

Проверьте это превосходное видео Ch9 w.Уэс Дайер объясняет, как использовать его с пользовательским интерфейсом: http://channel9.msdn.com/Blogs/J.Van.Gogh/Writing-your-first-Rx-Application

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...