Я создаю приложение в WPF, и мне нужно отобразить маленькое поле с флажком, парой меток и квадратом для цвета внутри него.Пока это выглядит так:
Он построен следующим образом: верхний элемент - Grid
, внутри него - Button
, CheckBox
, Rectangle
и Label
.
Это вроде работает, но проблема в том, что я не могу ссылаться на него как на отдельный объект.Давайте назовем это поле BoxUiElement
, и есть также класс, который хранит все данные для него (значения меток, значение цвета, флажок отмечен (bool)), давайте назовем этот класс Box
.Итак, когда флажок установлен, я должен найти, к какому Grid
он принадлежит, затем по этому Grid
я найду, к какому экземпляру Box
он относится, и изменить значение Box.IsChecked
.
Я уверен, что это не очень ООП стиль, и должен быть способ создания пользовательского элемента управления UI, который будет работать так же, как простые Button
работы, или Label
работы, или любой другой элемент интерфейса работает.Я имею в виду, если вы поместите его в Grid
, вы можете указать, в каком столбце / строке он будет находиться;если вы просто поместите его на Canvas
, вы можете установить его положение, и оно будет отлично отрисовано.Вы меня понимаете.
Моя конечная цель - создать пользовательский элемент пользовательского интерфейса, который бы:
назывался BoxUiElement (или что-то еще) и не требовал бы ничего, кроме BoxUiElement myBoxUiElementInstance = new BoxUiElement();
;поднять событие, когда отмечен ChechBox
, поднять событие, если щелкнуть или дважды щелкнуть;поднять событие, когда на него что-то упало;и т. д.
До сих пор я много искал, но не нашел хороших примеров того, что я хочу - собрать несколько элементов в один.Я нашел несколько примеров стиля, и они предложили расширить, например, класс кнопки, XML-дизайн для него и добавить больше событий, но мне не просто нужна кнопка, это множество элементов, которые действуют как один элемент пользовательского интерфейса..
Самое близкое и достаточное, что я могу отнести к элементам пользовательского интерфейса в Android.Вы определяете каждый элемент отдельно, а затем можете объединить их.