Как повторно использовать WPF ScrollViewer для создания собственного прокручиваемого элемента управления? - PullRequest
1 голос
/ 31 августа 2009

Я пытаюсь улучшить контроль рисования графика, который идет с Graph #. Это хорошо, но все выходит из-под контроля, когда вы начинаете перетаскивать узлы вокруг. Это моя первая встреча с WPF, так что это, вероятно, вопрос новичка. :)

У меня есть элемент управления GraphCanvas, в котором есть узлы и ребра. Их можно перетаскивать, что меняет их координаты, возможно делая их отрицательными. Я хотел бы добавить полосы прокрутки к элементу управления, который позволил бы увидеть, насколько большой на самом деле холст.

С этой целью я собираюсь поместить GraphCanvas в ScrollViewer. Что было бы довольно легко и просто, если бы не одна проблема. Я не могу изменить размер самого GraphCanvas, когда узел перетаскивается за границы, или это может привести к неправильному перетаскиванию. Это также проблема с оригинальным элементом управления (проверьте его, он поставляется с примером приложения).

Было бы хорошо, если бы я мог привязать размер / расположение полосы прокрутки к свойствам GraphCanvas, чтобы ScrollViewer ничего не прокручивал физически, а просто устанавливал свойства GraphCanvas. Это, в свою очередь, будет выполнять все фактические вычисления и прокрутку.

Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 31 августа 2009

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

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

Voila!

0 голосов
/ 31 августа 2009

Проверьте эту ссылку прямо из MSDN. В нем говорится о объединении нескольких элементов управления в один составной элемент управления:

WPF: настройка элементов управления для Windows Presentation Foundation

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