Позвольте мне сформулировать проблему в первую очередь. Я хотел бы реализовать оболочку вокруг Canvas (позвольте мне назвать ее страницей), которая будет реализовывать выбор прямоугольника вокруг его UIElements, которые фактически выбраны. Для этого я реализовал интерфейс ISelect так:динамический выбор прямоугольников над usercontrols
interface ISelect {
Point Center {get; set;} //Center of selecting rectangle
Size Dimensions {get; set;} //Dimensions of selecting rectangle
}
Каждый объект, который помещается на страницу реализует интерфейс ISelect. Страница имеет SelectedElements типа ObservableCollection, которая содержит ссылку на все выбранные в данный момент элементы.
Для каждой записи в SelectedElements я хотел бы нарисовать вокруг нее прямоугольник.
У меня есть несколько идей, как это сделать:
- Каждый UIElement может реализовать в одиночку этот прямоугольник и показать его при выборе. Этот параметр потребовал бы, чтобы новые объекты выполняли это каждый раз. Поэтому я предпочитаю не использовать его.
- На странице Я мог бы создавать прямоугольники в коде, чтобы добавить их на страницу. Это не MVVM рекомендуется priniciple.
- На странице XAML создайте нечто вроде ItemsControl и привяжите его к SelectedElements определенным шаблоном. Этот вариант кажется мне лучшим. Пожалуйста, помогите мне в этом направлении. Должен ли я каким-то образом использовать ItemsControl?
спасибо.
Поиск украшений (для визуализации выделения). Или, если вы предпочитаете индивидуальный выбор, вместо того, чтобы добавлять визуальные эффекты к 'Canvas' напрямую, вы можете размещать каждый внутри' Border' (используя шаблоны данных), видимость которого связана с свойством IsSelected для этой модели визуального представления. – Sinatr
Привет. Спасибо за быстрый ответ. Есть ли какой-нибудь пример вашего подхода? – ZgHrvoje