locked
Тормозит UI при использовании ListPicker из WPToolkit RRS feed

  • Вопрос

  • Доброго времени суток!

    При использовании ListPicker'a столкнулся с проблемой, что при открытии его в режиме FullMode( открывается отдельная страница c элементами) у меня жутко тормозит UI. Немогу понять почему!? Либо это проблема в анимации у данного компонента(элементы при открытии появляются поочередно, переворачиваясь), либо это глючит сам ListPicker, когда получает в ItemSource  коллекцию с более чем 200 элементов. Кто сталкивался с подобной проблемой подскажите, что можно сделать... например, как отключить анимацию или есть ли какой-нибудь другой подобный контрол?!

    Заранее спасибо за ответы


    • Изменено ProstoKorol 28 августа 2013 г. 19:14
    28 августа 2013 г. 11:04

Ответы

  • Доброго времени суток!

    При использовании ListPicker'a столкнулся с проблемой, что при открытии его в режиме FullMode( открывается отдельная страница в элементами) у меня жутко тормозит UI. Немогу понять почему!? Либо это проблема в анимации у данного компонента(элементы при открытии появляются поочередно, красиво переворачиваясь), либо это глючит сам ListPicker, когда получает в ItemSource  коллекцию с более чем 200 элементов. Кто сталкивался с подобной проблемой подскажите, что можно сделать... например, как отключить анимацию или есть ли какой-нибудь другой подобный контрол?!

    Заранее спасибо за ответы


    200+ элементов забивать в list picker - не самый лучший вариант. У меня при < 10 элементов медленно раскрывается, но это анимация такая. Я бы в вашем случае сделал отдельную страницу с гридом. Так быстрее будет. Скажем, есть текстбокс или блок с ранее выбранным (или дефолтным) элементом, по нажатию открывается страница со списком. Наверняка есть какой-то способ отключить анимацию, но копаться времени нет...
    28 августа 2013 г. 14:15
  • Вопрос решился. 

    Для V.A.Zolotov(чтобы сэкономить время=)), а так же для тех кому также понадобится отключить анимацию появления элементов покажу как это можно сделать.

    В файле \ListPicker\ListPickerPage.xaml.cs

    Меняем это:

     private void OnIsOpenChanged()
            {
                UpdateVisualState(true);
            }

    на это:

     private void OnIsOpenChanged()
            {
                UpdateVisualState(false);
            }

    так же в методе OnLoaded меняем 

     SetupListItems(-90);

    на

     SetupListItems(0);

    а также 

     headerProjection.RotationX = -90; 

    на 

     headerProjection.RotationX = 0; 

    в следствии чего анимация не работает, и UI не тормозит и при >200 элементах


    • Изменено ProstoKorol 31 августа 2013 г. 6:17
    • Помечено в качестве ответа ProstoKorol 31 августа 2013 г. 6:17
    30 августа 2013 г. 13:41

Все ответы

  • Доброго времени суток!

    При использовании ListPicker'a столкнулся с проблемой, что при открытии его в режиме FullMode( открывается отдельная страница в элементами) у меня жутко тормозит UI. Немогу понять почему!? Либо это проблема в анимации у данного компонента(элементы при открытии появляются поочередно, красиво переворачиваясь), либо это глючит сам ListPicker, когда получает в ItemSource  коллекцию с более чем 200 элементов. Кто сталкивался с подобной проблемой подскажите, что можно сделать... например, как отключить анимацию или есть ли какой-нибудь другой подобный контрол?!

    Заранее спасибо за ответы


    200+ элементов забивать в list picker - не самый лучший вариант. У меня при < 10 элементов медленно раскрывается, но это анимация такая. Я бы в вашем случае сделал отдельную страницу с гридом. Так быстрее будет. Скажем, есть текстбокс или блок с ранее выбранным (или дефолтным) элементом, по нажатию открывается страница со списком. Наверняка есть какой-то способ отключить анимацию, но копаться времени нет...
    28 августа 2013 г. 14:15
  • Анимацию отключить походу можно только удалив несколько строк кода в исходниках =)

    29 августа 2013 г. 7:10
  • Вопрос решился. 

    Для V.A.Zolotov(чтобы сэкономить время=)), а так же для тех кому также понадобится отключить анимацию появления элементов покажу как это можно сделать.

    В файле \ListPicker\ListPickerPage.xaml.cs

    Меняем это:

     private void OnIsOpenChanged()
            {
                UpdateVisualState(true);
            }

    на это:

     private void OnIsOpenChanged()
            {
                UpdateVisualState(false);
            }

    так же в методе OnLoaded меняем 

     SetupListItems(-90);

    на

     SetupListItems(0);

    а также 

     headerProjection.RotationX = -90; 

    на 

     headerProjection.RotationX = 0; 

    в следствии чего анимация не работает, и UI не тормозит и при >200 элементах


    • Изменено ProstoKorol 31 августа 2013 г. 6:17
    • Помечено в качестве ответа ProstoKorol 31 августа 2013 г. 6:17
    30 августа 2013 г. 13:41