|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
Как работает связка WPF control-DepedencyProperty-динамический массив данных?16.02.2017, 10:59. Показов 9459. Ответов 77
Метки нет (Все метки)
Начал изучение технологии WPF которая сулит много разных замечательных вещей... И остановился вот на чём.
Первая простая задача - есть массив данных от устройства который динамически меняется и есть WPF кантрол красиво нарисованных в редакторе xaml который призван эти данные быстро отрисовывать... Проблема обнаружилась тут же... Весь массив засунуть в свойство зависимости нельзя ... - потому как это свойство зависимости определяется в статическом конструкторе и его изменять нельзя... А какая же тогда схема тут должна была быть ? Очень привлекательным видится вариант динамической перерисовки кантроля без обработки событий - сразу по изменению массива. Это утверждается в теории DepedencyProperty.
0
|
|
| 16.02.2017, 10:59 | |
|
Ответы с готовыми решениями:
77
Двумерный динамический массив: как это работает?
Как получить из библиотеки классов wpf user control library |
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 13.03.2017, 14:11 [ТС] | |
|
Провел эксперимент... Каждый тик таймера (20милисек) меняю все значение сигнала в каждом из каналов...
Такое впечатление что скорость перерисовки раз в секунду... Есть идеи как ускорится? Добавлено через 18 минут Теперь убрал выделение памяти... стало значительно быстрее ! при 50 милисекундах не тормозит на intel i7.
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
||||||
| 27.03.2017, 09:49 [ТС] | ||||||
|
Все таки с разметкой еще не совсем всё понял... Такой вопрос - добавляю в grid еще одну ячейку. Их теперь три - 0,1 и 2...
В эту ячейку слева помещаю slider и все отлично... Далее хочу поместить туда же метку которая будет отображать значение слайдера ...
В других случаях появляется пустая ячейка справа которая убивает весь дизайн...
0
|
||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 27.03.2017, 10:35 | |
|
Duzekrutov, слайдер и метку нужно обернуть в вертикальный StackPanel. А уже его помещать в ячейку грида
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 27.03.2017, 14:28 [ТС] | |
|
Почему то метка когда делаешь ее вертикальной поворотом на 90 градусов - динамически изменяя ее размер данных растягивается не только вертикально но и горизонтально. Ее размеры растут одинаково с обоих сторон ( квадратно)...и весь дизайн полный финиш...
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 27.03.2017, 15:15 | |
|
Как поворачиваешь? RenderTransform или LayoutTransform?
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 27.03.2017, 15:35 [ТС] | |
|
Поворачиваю RenderTransform-ом. Пробовал и TextBlock - тоже самое происходит... Может создать производный кантрол от Slider и рисовать прям на нем - на той половине где полоса...?
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 27.03.2017, 15:49 | |
|
Duzekrutov, поворачивай через LayoutTransorm
1
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 27.03.2017, 15:58 [ТС] | |
|
Действительно работает ! А как сделать чтобы значения были только целые ? Слайдер дает дробные до 10 знаков после запятой. Надо для такой ерунды писать конвертер ?
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 27.03.2017, 16:11 | |
|
Задать значения
SmallChange, LargeChange как целые числа.Добавлено через 2 минуты и на всякий случай задать у Label нужный ContentStringFormat
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
||||||
| 27.03.2017, 16:55 [ТС] | ||||||
|
Ок. Задам еще вопросик раз ты всё ответы знаешь)... Я сделал этот слайдер с меткой в отдельной панели вертикальной...
0
|
||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 28.03.2017, 07:23 | |
|
Duzekrutov, если нужно делить ровно пополам, то вместо
StackPanel следует использовать Grid с двумя строками.Либо, если сохранить StackPanel, задать минимальные размеры слайдера и метки, чтобы они не вырождались в точки.
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 28.03.2017, 10:28 [ТС] | |
|
Все стало намного лучше... Добавил к слайдеру smallchange=1 largechange=10 но при этом значения все равно бывают 1000.5. Это видимо из за свойства value - double. А целыми их можно сделать только через конвертер ?
Добавлено через 11 минут Почему вообще через задание клавиатурой нормально меняются только целые на 1 или 10 на слайдере а через мышь дробные с 10 знаками после запятой? Можно как то и для мыши задать smallchange ?
0
|
|
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 28.03.2017, 10:49 | |
|
При перемещении мышью значение может быть любым из диапазона. Чтобы ограничить их, нужно включить
IsSnapToTickEnabled и настроить расстояние между метками.
1
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
||||||
| 29.03.2017, 12:39 [ТС] | ||||||
|
Забавная конечно вся эта система XAML разметки интерфейса плюс конвертеры как сложное средство привязки к коду ...
Я вот интерфейс в первой итерации закончил... Осталась одна проблемка. Метка отображает значение слайдера и привязана к нему. Но у нее TestAligment=Right и это слишком не наглядно на экране (слипается )- нужен один пробел в конце...Раньше в коде для текстового поля просто писали ...
0
|
||||||
|
8953 / 4865 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 29.03.2017, 12:46 | |
|
Добавление пробелов — хуже не придумаешь! Добавь с нужной стороны
Margin, или Padding. Первое сделает отступ от соседнего контрола, а второй от содержимого
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 27.04.2017, 13:31 [ТС] | |
|
После некоторого периода отладки на живых данных возникает такое исключение. "Shape.Rectangle не должно возвращать значение NaN для параметра DisiredSize". Числа исходные приходящие из аппаратуры как сигнал это либо нули либо float32 маленьких значений...
Добавлено через 20 минут при этом деления на ноль нет - я это контролирую..
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 22.11.2017, 13:57 [ТС] | |
|
Задача была решена. Но к ней вышло дополнение. Поэтому я решил не открывать новую тему а продолжить данную.
Вот принтскрины - как выглядит программа. Есть сигналы - есть справа и слева разные шкалы отображения сигнала.. Но появилась задача отдельного меню - которое связано с подачей в прибор некоего сигнала управления. Этот сигнал воздействует на прибор в целом но спектры каналов при этом меняются... На картинках видно меню - "интерактивные инструменты отладки". Можно ли пользователю создать такое же свое меню. Именно также сворачивающееся в полоску. Меню будет состоять из нескольких кнопок - передачи частоты в прибор вручную или передачу значений частоты увеличивающееся или уменьшающееся по таймеру. Второй вариант меню - прозрачное и стыкующееся к любой стороне окна вручную. Как это реализовать в WPF ?
0
|
|
|
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
|
|
| 21.08.2020, 11:39 [ТС] | |
|
опс
0
|
|
| 21.08.2020, 11:39 | |
|
Возможна ли связка между 1с (как источник данных) и access 2003 (как обработчик этих данных)
Не работает динамический массив Как работает связка клиент-сервер (apache-php-mysql)? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|