2010-11-16 2 views
1

Я пишу 2D-графический инструмент в C# и WPF, и я использую Adorners на Shapes, нарисованном на Canvas.Доступ к данным у Adorner

Я хотел бы, чтобы украшатели выделяли, когда фигура считается «выбрана», которую я сейчас делаю, используя MouseDown и MouseUp события.

Однако пользователь может выбрать несколько фигур, поэтому не все формы получат оба события мыши.

У меня есть класс, который управляет чертежом, который содержит List выбранных фигур. Каков наилучший способ предоставить посетителям доступ к этим данным, чтобы они могли видеть, выбран ли их украшенный элемент?

Некоторые вещь я рассмотрел:

  • Создание List глобальной - плохая идея
  • Sub-причислять каждую форму, чтобы добавить «выбранные» свойство - потребует изменения все ссылки на формы в моем класс

ответ

1

Вы можете создать привязанный уровень зависимости, который вы задали в своей форме, - тогда вы можете установить это свойство, когда вы его выбрали. У обожателя может быть видимость, привязывающая свойство к форме, поэтому вы получаете автоматический набор видимости.

Вы также можете использовать свойство Tag на форму для хранения значений - это старый способ сделать это :)

+0

Вы также можете реализовать PropertyChanged на DependencyProperty автоматически установить Adorner на выбранных форм. –

+0

Я посмотрел на теги, но они недоступны для фигур, только для Adorners! Можно ли добавить функцию тега в существующий класс? – dig412

+0

Формы: Эллипс, Многоугольник и Прямоугольник, происходящие из System.Windows.Shapes.Shape справа? Класс Shape имеет свойство Tag. Это происходит из FrameworkElement, поэтому вы должны иметь это :) –