Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273

Как работает связка WPF control-DepedencyProperty-динамический массив данных?

16.02.2017, 10:59. Показов 9459. Ответов 77
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начал изучение технологии WPF которая сулит много разных замечательных вещей... И остановился вот на чём.
Первая простая задача - есть массив данных от устройства который динамически меняется и есть WPF кантрол красиво
нарисованных в редакторе xaml который призван эти данные быстро отрисовывать... Проблема обнаружилась тут же...
Весь массив засунуть в свойство зависимости нельзя ... - потому как это свойство зависимости определяется в статическом конструкторе и его изменять нельзя... А какая же тогда схема тут должна была быть ?
Очень привлекательным видится вариант динамической перерисовки кантроля без обработки событий - сразу по изменению массива. Это утверждается в теории DepedencyProperty.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2017, 10:59
Ответы с готовыми решениями:

Двумерный динамический массив: как это работает?
вобщем неправильно понимаю суть. помогите разобраться. двумерный динамический массив. в определении дается , что это объявление...

Как в WPF создать Custom Control унаследованный от Listview
Всем привет! Долго мучаюсь, просканировал инет, но так и не нашел решения - как сделать Custum Control унаследованный от Listview. Создание...

Как получить из библиотеки классов wpf user control library
Здравствуйте, все из заголовка ясно, под рукой только visual studio 2008 express, там из шаблонов только приложение wpf и библиотека...

77
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 и все отлично... Далее хочу поместить туда же метку которая будет отображать значение слайдера ...
C#
1
<Label Grid.Column=0 .../>
...но она перепрыгивает направо и ну никак не однаруживается рядом со слайдером...
В других случаях появляется пустая ячейка справа которая убивает весь дизайн...
0
 Аватар для ViterAlex
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
 Аватар для ViterAlex
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
 Аватар для ViterAlex
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
 Аватар для ViterAlex
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  [ТС]
Ок. Задам еще вопросик раз ты всё ответы знаешь)... Я сделал этот слайдер с меткой в отдельной панели вертикальной...
C#
1
2
3
<StackPanel Grid.Column=0 Orientation=Vertical..>
<Slider..>
<Label..>
Но при этом при любых сочетаниях значений HorizontalEligment и VerticalEligment у слайдера и у метки мне не удается добиться чтобы они занимали все пространство кантрола по вертикали деля его пополам...Если метку стыкуешь к низу она вылетает за пределы. Если слайдер к верху - он становится нулевой длины и превращается в точку. И на метке не видно длинных чисел...при малой длине..
0
 Аватар для ViterAlex
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
 Аватар для ViterAlex
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 и это слишком не наглядно на экране (слипается )- нужен один пробел в конце...Раньше в коде для текстового поля просто писали ...
C#
1
text = Value.ToString() + " ";
А теперь это возможно без написания сложного конвертера ?
0
 Аватар для ViterAlex
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 ?
Миниатюры
Как работает связка WPF control-DepedencyProperty-динамический массив данных?   Как работает связка WPF control-DepedencyProperty-динамический массив данных?  
0
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
21.08.2020, 11:39  [ТС]
опс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.08.2020, 11:39

Возможна ли связка между 1с (как источник данных) и access 2003 (как обработчик этих данных)
Хочу сделать 1с как источник данных, но не знаю как подключить к акцесу, кто может объяснить как, без участия кода. 1с 8.3

Как работает такая связка?
Вот кусок кода. Вкратце: форма, скрытый div и некий скрипт. По нажатию кнопки формы происходит обращение к mail.php (скрипт отправляет...

Как работает связка Access 2010 с MS SQL (схематично)
Уважаемые друзья! Приветствую Вас! Я новичок в Аксесе, до этого все мои базы были сделаны в Экселе, но сейчас понимаю уже что то что...

Не работает динамический массив
В массиве всегда один элемент. Что я делаю не так? int *p; p = new int ; p = 1; //в watch p = 1 p = 2; //в watch все равно в...

Как работает связка клиент-сервер (apache-php-mysql)?
верна ли схема web сервера, php, mysql, apache, noip? Нарисовал схемку взаимодействия клиента с web-сервером с apache, php, mysql и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
78
Ответ Создать тему
Новые блоги и статьи
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. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru