2009-08-31 2 views
2

После запроса this question Я понял, что, возможно, я должен был задать более общий вопрос. Итак, вот так:Как добавить полосы прокрутки в пользовательский элемент управления в WPF?

В WPF я создаю настраиваемый элемент управления Panel. К этому управлению я хотел бы добавить горизонтальные и вертикальные полосы прокрутки и самостоятельно управлять ими (получите & set min/max/value/pagesize). Как я могу это сделать?

Это моя первая встреча с WPF, и я еще не знаком с шаблонами и стилями, поэтому я не знаю, лежит ли ответ там или где-то еще.

ответ

2

Да. Ответ лежит не на панели, а на ScrollViewer. Ваша панель не должна заботиться о полосах прокрутки. Пусть ScrollViewer измеряет и упорядочивает вашу панель. Так что ваше визуальное дерево будет включать в себя ScrollViewer, а затем к панели:

<ScrollViewer> 
     <cc:YourPanel/> 
    </ScrollViewer> 

Если вы хотите контролировать ScrollViewer, вы, вероятно, захотите либо наследовать от него или настроить свой шаблон.

+0

Проблема - мой контроль может ** НЕ ** изменять свой размер. ScrollViewer основан на проверке размера дочернего элемента управления. –

+0

Эй, Вилкс, ты решил эту проблему? Я только что получил то же самое. –

2

ОК, я нашел его! Три простых шага:

  1. Внесите System.Windows.Controls.Primitives.IScrollInfo на свой заказ;
  2. Добавить свой собственный элемент управления в ScrollViewer;
  3. Установите CanContentScroll на ScrollViewer на True.

Voila!