2 / 2 / 0
Регистрация: 05.11.2021
Сообщений: 82
|
|||||||||||
1 | |||||||||||
Получение свойства Margin из элементов ItemsControl26.10.2024, 17:16. Показов 372. Ответов 9
Доброго времени суток!
Есть следующий код: StepProgressBar.xaml
С его помощью создаётся полоска Rectangle с ItemsControl, а отдельно в MainWindow.xaml создаётся наполнение ItemTemplate'ми. Мне необходимо, чтобы левый край полоски совпадал с положением первого элемента ItemsControl, а правый край - с положением последнего (одним словом, чтобы полоска не "вылезала" за элементы). Как я ни пытался получить Margin этих элементов, они всегда имели значение NaN. Как можно решить эту проблему?
0
|
26.10.2024, 17:16 | |
Ответы с готовыми решениями:
9
ListBox дефолтная стилистика для ItemsControl.ItemTemplate и ItemsControl.ItemsPanel Свойство column свойства margin Создание отступов текста с помощью css-свойства margin Вывод элементов ItemsControl в UserControl Стороннее добавление элементов в ItemsPanel ItemsControl[a] |
2 / 2 / 0
Регистрация: 05.11.2021
Сообщений: 82
|
|
26.10.2024, 22:32 [ТС] | 3 |
Элд Хасп
Добавлено через 2 часа 54 минуты Смысл моей идеи заключался в том, чтобы узнать отступы от краёв первого и последнего элемента ItemsControl и такие же отступы справа и слева назначить Rectangle
0
|
Модератор
|
|
26.10.2024, 22:35 | 4 |
Да. Margin задаёт поля вокруг элемента в выделенном для него регионе визуализации.
Но у вас StackPanel. И каким образом поле вокруг элемента позволит определить его позицию? И как она поможет потом нарисовать соединяющую линию? Я вижу такое самое простое решение. ItemsControl визуализирует все кружки. Вам нужно провести под ними линию от первого до последнего. Так как кроме StackPanel в ItemsControl ничего нет, то линия должна рисоваться по всей ширине ItemsControl с отступами слево и справо достаточными чтобы не выступать из под первого и последнего элемента.
0
|
26.10.2024, 22:35 | 5 |
чем Margin тут поможет? Технически, углы у Rectangle будут выступать за окружность, даже если этого будет не различить на экране. Т.е. это костыль.
Проще полоску сдвигать в центр круглых областей. Этого точно не будет видно.
1
|
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
|
|
26.10.2024, 22:37 | 6 |
Можно добавить в привязанную коллекцию элементы, которые будут отвечать за соединители и пропуски.
1
|
Модератор
|
||||||
26.10.2024, 22:38 | 7 | |||||
Сообщение было отмечено Zero_000 как решение
Решение
По вашему коду отступы будут 20.
0
|
2 / 2 / 0
Регистрация: 05.11.2021
Сообщений: 82
|
|
26.10.2024, 22:54 [ТС] | 8 |
В таком случае, при левом выравнивании, размещать сам контрол в пространстве окна уже при помощи Margin, я верно понимаю?
0
|
Модератор
|
|
26.10.2024, 23:03 | 9 |
У вас же "ручная" разметка.
Поэтому при изменении разметки нужно изменять "руками" и линию. Если делать в общем виде, то согласен с wizard41. Нужно определять центры первого и последнего. Потом по этим данным строить линию. Но в этом случае не так просто определить что такое "последний". Ведь в общем случае последовательность в ItemsSource далеко не обязательно будет соответствовать визуальной их последовательности. Например можно добавить в local:Step свойства с помощью которого указать первый и последний элемент.Прокидывать их на уровень ItemsControl и там уже Rectangle сможет "поймать" их центры и правильно себя отпозиционировать. Но всё это потребует несколько десятков строк кода. Может даже за сотню перевалить. Поэтому надо сначала вам подумать настолько вам нужно общее решение?
1
|
2 / 2 / 0
Регистрация: 05.11.2021
Сообщений: 82
|
|
26.10.2024, 23:07 [ТС] | 10 |
Благодарю за совет, буду пробовать!
0
|
26.10.2024, 23:07 | |
26.10.2024, 23:07 | |
Помогаю со студенческими работами здесь
10
CSS Не работает margin-top/margin-left в IE, Firefox Margin-top и margin-bottom в ie6 не работает Получение свойства изображения Получение свойства наследуемого класса Получение значение свойства объекта Получение свойства из родительского класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |