dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Автоматична прокрутка у ScrollViewer

Останнє повідомлення 11-07-2008, 0:20 від PomAH4uK. 9 відповіді.
Сортувати: Попереднє Наступне
  •  14-06-2008, 4:53 6317

    Автоматична прокрутка у ScrollViewer

    В мене така ситуація

    <ScrollViewer x:Name="scroll"  VerticalAlignment="Bottom" VerticalContentAlignment="Bottom" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" >

    <StackPanel x:Name="stackPanel" Grid.Row="0" Background="Azure" VerticalAlignment="Top" >

    </StackPanel></ScrollViewer>

    Я в С# додаю до stackPanel  контроли, і мені треба щоб прокрутка була до низу автоматично, щоб я бачив нові контроли. І от не знаю як це зробити, хелпHmm


    Я студент, і не відмінник, тому мої слова сприймайте з усмішкою, за базар не відповідаю:))
  •  14-06-2008, 17:48 6321 у відповідь на 6317

    Re: Автоматична прокрутка у ScrollViewer

    PomAH4uK:

    Я в С# додаю до stackPanel  контроли, і мені треба щоб прокрутка була до низу автоматично, щоб я бачив нові контроли. І от не знаю як це зробити, хелпHmm

    После добавления каждого контрола используй scroll.ScrollToBottom();

  •  15-06-2008, 1:55 6322 у відповідь на 6321

    Re: Автоматична прокрутка у ScrollViewer

    Дякую, хоч такого методу не знайшов, але правда була близька:)

    scroll.UpdateLayout();

    scroll.ScrollToVerticalOffset(stackPanel.ActualHeight);


    Я студент, і не відмінник, тому мої слова сприймайте з усмішкою, за базар не відповідаю:))
  •  17-06-2008, 0:59 6329 у відповідь на 6322

    Re: Автоматична прокрутка у ScrollViewer

    PomAH4uK:

    Дякую, хоч такого методу не знайшов, але правда була близька:)

    scroll.UpdateLayout();

    scroll.ScrollToVerticalOffset(stackPanel.ActualHeight);

     

    Вот вырезка из рефлектора:

    public class ScrollViewer : ContentControl
    {
      .........................................................................
       public void ScrollToBottom();
        public void ScrollToEnd();
        public void ScrollToHome();
        public void ScrollToHorizontalOffset(double offset);
        public void ScrollToLeftEnd();
        public void ScrollToRightEnd();
        public void ScrollToTop();
        public void ScrollToVerticalOffset(double offset);
      ...........................................................................
    }

  •  30-06-2008, 4:11 6411 у відповідь на 6329

    Re: Автоматична прокрутка у ScrollViewer

    Просто фішка в тому що в WPF ті всі методи є, а у Silverlight beta1 нема, ну принаймні IntelliSense мені таких методів не показав.


    Я студент, і не відмінник, тому мої слова сприймайте з усмішкою, за базар не відповідаю:))
  •  30-06-2008, 15:36 6413 у відповідь на 6317

    Re: Автоматична прокрутка у ScrollViewer

    Привіт.

    Я впринципі більш горизонтальними танцями з WPF займаюсь (: , а Silverlight з ним спільного має лиш кзамл і назви контролів ( реалізовані вони по іншому ). Та всерівно - цікаво ..

    Щодо твоєї трабли.
    ScrollViewer має таку чудову пропертю як ScrollableHeight яка вказує на скільки його можна проскролити по вертикалі і метод ScrollToVerticalOffset(double offset) який "наказує" скролим до offset.
    Я елементи в лоаді докидав, а після того викликав той метод - і ... нічого. Як виявилось одразу після того як збільшили розмір чайлда, ScrollViewer нічого про це "не знає" (зовсім на WPF не схоже). Та якщо викликати UpdateLayout(), то він ніжно про зміни повідомить.
    В результаті отримаєм:

                scroll.UpdateLayout();
                scroll.ScrollToVerticalOffset( scroll.ScrollableHeight );


    і все гарно.

    PS: можливо є гарніше рішення, з цікавістю подивлюсь, я з Silverlight'том грався лиш для ознайомлення. Як і з цікавістю послухаю проте як там реалізований апдейт лаяута  .
    PSS: щодо твого підпису, в українській мові перед "і" кома не ставиться там де ти її притулив, без образ, но в школі вчителька соловїної потужна була. Правила не цитуватиму - був затятим трієчником з мови ): .


    http://rredcat.blogspot.com/
    Помічено як: ,
  •  30-06-2008, 15:41 6414 у відповідь на 6411

    Re: Автоматична прокрутка у ScrollViewer

    До речі, я для пошуків рішення використовував Silverlight 2 Beta 2. Як справи з бетою 1 не знаю. Хоча на останній конфі казали, що нових контролів додали мало в порівнняні з попередньої бетою, в основному старе переписували оптимізували.

    http://rredcat.blogspot.com/
  •  30-06-2008, 16:18 6415 у відповідь на 6322

    Re: Автоматична прокрутка у ScrollViewer

    PomAH4uK:

    Дякую, хоч такого методу не знайшов, але правда була близька:)

    scroll.UpdateLayout();

    scroll.ScrollToVerticalOffset(stackPanel.ActualHeight);



    Як там казав Штірліц - запам'ятовують початок і кінець, так і я. Тіки пізніш всю простиню теми перечитав. Виявились мої старання в більшовсті продублювали твої. Тіки от ти з ActualHeight помилився. Він тільки висоту "відмальовану" (відрендерену) показує. Збільш кількість чілдренів у стек панелі хоча б до 100 і ти побачиш свою помилку і чому тре використовувати ScrollableHeight.

    http://rredcat.blogspot.com/
  •  30-06-2008, 21:13 6416 у відповідь на 6415

    Re: Автоматична прокрутка у ScrollViewer

    Ха, таки по ночах варто спати, а не на форумах писати (:.
    Ти ActualHeight від стек панела береш, а не від ScrollViewer'ра. Тому в тебе все працює правильно, поки ти не вирішиш маржіни тому стекпанелу побільші проставити, чи паддінг скролв'юверу (!). :P

    http://rredcat.blogspot.com/
    Помічено як: , ,
  •  11-07-2008, 0:20 6465 у відповідь на 6416

    Re: Автоматична прокрутка у ScrollViewer

    RredCat:
    Ха, таки по ночах варто спати, а не на форумах писати (:.
    Ти ActualHeight від стек панела береш, а не від ScrollViewer'ра. Тому в тебе все працює правильно, поки ти не вирішиш маржіни тому стекпанелу побільші проставити, чи паддінг скролв'юверу (!). :P

    Гг, та я навмання це все вибирав-методом тику, але все заканалоBig Smile

    Про підпис: мені просто здається це "і не відмінник" -йде як уточнення, яке походу і описується комамиTongue Tied


    Я студент, і не відмінник, тому мої слова сприймайте з усмішкою, за базар не відповідаю:))
Переглядати як новосний Блог RSS в XML