Так что я пытался найти лучший способ сделать это, но всегда заканчивал тем, что ударялся о стену.
По сути, моя проблема заключается в следующем: у меня есть слой, который может рисовать элементы типа UIElement. В моем случае мне нужно уметь рисовать элементы UIE двух типов, Image и Shape. Они оба унаследованы от UIElement.
Теперь я хочу создать свой собственный класс, давайте назовем его классом LayerItem. Элемент LayerItem содержит дополнительную информацию о конкретном элементе, например имя.
Моим первым решением было унаследовать LayerItem от класса Image и добавить новые поля. Таким образом, я смог также перехватить все события, полученные объектом Image (например, MouseOver), а затем привести объект к LayerItem для получения дополнительной связанной информации. Отображение изображения было выполнено установкой Source-свойства объекта.
Однако этот подход не работает, если объекты также могут быть фигурами, поскольку фигуры не имеют свойства Source.
По сути, я ищу «правильный путь», позволяющий мне напрямую использовать события. Единственное решение, которое я в настоящее время могу придумать, это иметь словарь, отображающий UIElements в LayerItems, а затем извлекать LayerItem оттуда с помощью UIElement, событие которого было вызвано. Итак, есть ли лучшие, возможно, более сложные способы сделать это?
EDIT:
Спасибо за ответ, но я не уверен, что это именно то, что я ищу. Позвольте мне попытаться уточнить. По сути, у меня есть слой, на котором я могу рисовать разные вещи (изображения или фигуры), добавляя нужную графику на слой и присваивая ему координаты.
Идея состоит в том, что пользователь может щелкнуть по слою и выбрать из списка вещей, какую графику он / она хотел бы использовать для представления добавленного элемента. Дополнительная информация об элементе, такая как идентификатор и имя, хранится в базе данных, и мне нужен способ связать эту информацию с графическим элементом.
Таким образом, все это будет обрабатываться кодом, элементы создаются и удаляются динамически. Здесь также происходят события. Чтобы иметь возможность распознать, какой элемент пользователь щелкнул (чтобы показать дополнительную информацию, разрешить перетаскивание и т. Д.), Я думаю, что события, создаваемые UIElement, наиболее просты в использовании.
И о предоставлении кода в качестве примера, ну, это немного сложно, потому что это во многом зависит от реализации :) Но я, конечно, могу попытаться что-то выдвинуть, если мое объяснение все еще недостаточно ясно!