Pull to refresh

Comments 15

Хреновая навигация в caliburn… теже параметры в URL только в профиль
Плюсы я написал, если вам кажется что писать
navigationService.Navigate(new Uri("/SomePage.xaml?someParameter1=value1&someParameter2=value2.....",UriKind.Relative)

а потом еще это разбирать тоже самое что и засетить свойство класса, это ваше право.
боже упаси, я вообще избегаю этой модели навигации.
У этого кода есть два недостатка:
  1. Имя свойства задается по имени, а это чревато ошибками.

Первое решается с использованием Expression

Да, согласен, так меньше шансов ошибиться, но не стоит забывать, что этот код будет работать значительно медленнее:




Разумеется, если не работать с большими-большими объемами данных разница будет не ощутима, так что для многих вещей это разумный вариант. :-)
Совершенно верно, про это я собираюсь написать в окончании статьи.
А откуда такая разница у DO и INotifyPropertyChanged?
Я конечно слышал, что DO на 15-20% быстрее при большой кол-ве данных, но не в несколько раз же.
Судя по всему, из-за рефлексии:
The first method involves using reflection.

Property change notifications can be provided either by implementing the INotifyPropertyChanged interface ...

The third method for resolving object references involves a source object that is a DependencyObject and a source property that is a DependencyProperty. In this case, the data binding engine does not need to use reflection. Instead, the property engine and the data binding engine together resolve the property reference independently. This is the optimal method for resolving object references used for data binding.
Есть разумная альтернатива лямбдам в виде CallerMemberNameAttribute, которая не так ужасно влияет на производительность.
Однако, как не единожды справедливо замечал impwx, она работает до тех пор, пока вы не используете обфускацию.
Более того, этот аттрибут доступен в C# over 5.0 со всеми вытикающими.
Строго говоря, поддержка этого аттрибута зависит от версии платформы, а не от версии языка.
Правда, то, что аттрибут поддреживается только для .NET Framework версий 4.5, 4.5.1, 4.5.2.
Однако Microsoft BCL Portability Pack добавляет возможность пользоватся им начиная с .NET Framework 4.

По поводу GroupPageViewStorage: Property узнает о свойствах модели из типа при типизации StorageHandler? Property это функтор CM?
Да, в моем примере x имеет тип GroupPageViewModel, поэтому он знает о существовании Name. Если бы у GroupPageViewModel были бы другие свойства, которые нужно было бы сохранить, было бы достаточно добавить еще несколько вызовов Property c нужным объектом.
А продолжение есть??
хотелось бы увидеть как работать с моделями (что-то о них вообще мало информации) и с DataContext. Так же с ЛОкальной БД.
Не думаю что соберусь. Подобные статьи съедают слишком много времени, а выхлоп мизерный.
Если у вас есть вопросы, то лучше задайте их мне сюда или в личку.
Я так понимаю продолжение статьи уже на подходе ))
Там, кстати, много чего изменилось. Например, для WP 8.1 Bootstrapper уже не нужен.
Sign up to leave a comment.

Articles