|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||||||
Кастомная кнопка в UserControl или UserControl со свойствами кнопки01.09.2019, 19:54. Показов 15581. Ответов 128
Метки нет (Все метки)
Привет,
пытаюсь запихнуть кастомную кнопку в Useк Control. Что-то ерунда какая-то получается. Можете помочь? Хотелось бы UC со свойствами кнопки. Чтобы при клике меняла цвет своего Fill. и чтобы handle event был и binding работал, Также, от прилетаещего bool меняла свой Fill. Спасибо!
0
|
||||||
| 01.09.2019, 19:54 | |
|
Ответы с готовыми решениями:
128
Как разместить UserControl поверх другого UserControl Не сохраняются значения свойств заданные в дизайнере после создания своего UserControl с дополнительными свойствами
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 01.09.2019, 21:13 [ТС] | |
|
да вот, не знаю...
Вообще нужен UserControl, который бы доставался из ToolBox (сверху). Как это обычно у UC. Но свойства у него похожие на кастомную кнопку типа "scrolling down". Жмешь - меняет цвет Fill (зеленый). отпускаешь -Fill (белый)дефолтный. Event handler как у кнопки. Да еще с возможность привязки Fill через биндинг. Например, прилетает Bool, -цвет меняет с дефолтного на такой же как при нажатии.
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||||||
| 01.09.2019, 21:24 [ТС] | ||||||
|
да, с polygon, что-то не так, углы до краев немного недостают, хотя координаты ясно заложены. Концы stroke загруглил, а они все-равно непонятно какие.
Вот код можете прикинуть у себя?
0
|
||||||
|
Модератор
|
|||
| 01.09.2019, 21:31 | |||
|
У кнопки поведение - это выполнение команды по клику. Вашему UC такое поведение нужно? Если нет, то не надо и кнопку в него пихать. Опишите подробнее поведение которое вы хотите от своего UC. Его внешний вид в разных состояниях. Вот что это такое Event handler как у кнопки? Что ещё за Event handler?Добавлено через 1 минуту Сейчас скину пример.
0
|
|||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||
| 01.09.2019, 21:40 [ТС] | ||
|
Элд Хасп,
Да, поведение как у кнопки. Графически как на скрине выше. Форма не меняется. 1) Дефолтный цвет, например белый. 2) при нажатии меняется на зеленый, 3) отпускаешь -белый, 4) возможность биндинга свойства Fill, event handler как у кнопки. "button click"
0
|
||
|
Модератор
|
||||||||||||
| 01.09.2019, 22:41 | ||||||||||||
|
Вот пример шаблона и его использования
Все шаблоны надо держать отдельно в словаре, в окне же подключаете нужные словари и просто указываете в элементе какой шаблон надо взять. Если вам нужна кастомная кнопка, то можно переопределить класс кнопки - это лучше чем делать UserContolr. Добавлено через 27 секунд Забыл код конвертера скинуть
0
|
||||||||||||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 01.09.2019, 22:58 [ТС] | |
|
Элд Хасп,
Что-то много всего для такой простой задачи. Завтра потестирую. В отличие от UC который перетащил на поле и пользуешься, не понимаю как пользоваться вашим кодом, куда вставлять, а потом как пользоваться. Куда <Window.Resources> вставлять? Куда <Grid>? И куда конвертер?
0
|
|
|
Модератор
|
||||||||||||||||
| 01.09.2019, 23:41 | ||||||||||||||||
|
Вот переопределённая кнопка
0
|
||||||||||||||||
|
Модератор
|
||||
| 01.09.2019, 23:46 | ||||
|
Вы, вообще, что-то знаете про ресурсы, словари в XAML? Это относится к базовым знаниям. Без них изучать что-то более сложное - бессмыслен. У вас может быть тоже Grid, Может другой. Это роль не играет - просто пример использования. Добавляете в проект класс с этим именем, а в тело класса вставляете код.
0
|
||||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|||||||
| 02.09.2019, 09:27 [ТС] | |||||||
|
Если ресурсы окна, то это обычно так выглядит:
Добавлено через 15 минут Можно это в проекте увидеть , как единое целое?
0
|
|||||||
|
Модератор
|
||||||||||||
| 02.09.2019, 12:06 | ||||||||||||
|
У меня есть проект для мелких тестовых кодов. В нём несколько десятков различных задач. Вот в нём и делал. Опишу полный состав обоих вариантов В проекте с пространством имён namespace CyberForum нужны следующие файлы:Сначала вариант с шаблоном Файл конвертера для получения точек вписанного треугольника SizeToTriangleConverter.cs
Для шаблона сначала получил дефолтный шаблон кнопки и внёс в него необходимые изменения. Шаблон лежит в ресурсах окна. Но так сделано для удобства примера. При реальном использовании этот шаблон нужно держать в словаре. А словарь подключить к ресурсам приложения в файле App.xaml. Для возможности изменения цветов в шаблоне используются привязки к DynamicResource. Изменяя соответствующие ресурсы в более близком расположении - будут меняться и заданные ими цвета. Контент кнопки не выводится - я не увидел, что вы его используете поэтому сделал также. Но если нужно вывести контент -надо в шаблон добавить ConntentPresenter поверх PolygonВ примере по шаблону создаётся две кнопки. Одна с дефолтными значениями, вторая со значениями задаваемыми из собственных ресурсов. Так же есть CheckBox для проверки цветов не активных кнопок.Файл MainWindow.xaml
0
|
||||||||||||
|
Модератор
|
|||||||||||||||||||||||||||
| 02.09.2019, 12:28 | |||||||||||||||||||||||||||
|
Создаём кастомную кнопку. Для этого добавляем в проект UserControl с названием ButtonTriangle. Потом меняем в созданной рыбе базовый класс заменяя в xaml и xaml.cs UserControl на Button
Polygon. Вычисляемый список вершин в событии <Grid x:Name="PART_Grid" SizeChanged="PART_Grid_SizeChanged"> будем помещать в свойство контрола Points и будем получать оттуда по привязке ElementName=PART_MainButton. Так же с остальными необходимыми значениями (ширина границы и цвета) - все они получают значения по привязкам ElementName=PART_MainButton.Файл ButtonTriangle.xaml
ButtonTriangle.xaml.cs
Файл MainWindow.xaml
0
|
|||||||||||||||||||||||||||
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 02.09.2019, 14:01 [ТС] | |
|
Добрый день,
попытался имплементировать вар1 в свое тестовое решение. SizeToTriangleConverter.cs выдал кучу ошибок, часть которых удалось убрать, часть нет. Список ниже.-type SizeToTriangleConverter already defines a member convert with the same parameter types. Та же история c ConvertBack.-invalid expression term 'double'. -the term 'width' does not exist in the current context.
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 02.09.2019, 15:29 [ТС] | |
|
Вскидка оказалась верной.
![]() Все еще ругается на: -invalid expression term 'double'. -the term 'width' does not exist in the current context.
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
|
| 02.09.2019, 17:20 [ТС] | |
|
Спасибо,
чтобы запустить пришлось установить свежий netframework 4.8. Проект исполняется. Что странно, в конвертере 'красное подчеркивание' под: double; invalid expression term.width; the name 'width' does not exist in the current context.height; the name 'height' does not exist in the current context.остается как писал выше. Хотя проект исполняется. Что может быть? Добавлено через 6 минут файл ButtonTriangle.xaml что есть на научном языке? Это и есть UC?
0
|
|
|
Модератор
|
|
| 02.09.2019, 21:53 | |
|
Ахромчон -> файл ButtonTriangle.xaml что есть на научном языке? Это и есть UC?
В данном случае, производный от Button класс. Добавлено через 2 минуты Ахромчон -> в конвертере 'красное подчеркивание' под: Не знаю в чем может быть проблема.
0
|
|
|
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
|
||
| 02.09.2019, 22:02 [ТС] | ||
имплементировал второй, тот который UC. Второй 'чистый' и завтра буду тестить с ним биндинг.
0
|
||
| 02.09.2019, 22:02 | |
|
Помогаю со студенческими работами здесь
20
Управление usercontrol из другого usercontrol Вызов свойства кнопки на другом UserControl.xaml.cs
WPF MVVM View и ViewModel или UserControl и DependencyProperty Можно ли рисовать сразу на UserControl без Canvas или Grid Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|