|
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 49
|
|||||||||||
Кнопка с несколькими объектами Path05.12.2016, 22:22. Показов 5420. Ответов 25
Доброго времени суток.
Хотел бы открыть топик, в котором буду задавать вопросы более опытным коллегам и постить свой прогресс по теме, т.к. задача, хоть и тривиальная по идее, в реализации сильно отличается от большинства примеров и простых заданий, существующих на сайте и, как мне кажется, в будущем сможет помочь многим. Есть задача, создать WPF сложную кнопку почты, на которой вместо обычного текста будет присутствовать: - рисунок с изображением(2) (например конвертика); - на момент подгруздки писем поверх основного рисунка, в определенном красотой месте, крутится рисунок отображающий загрузку писем(3) (а-ля стрелочки в кружочке) - после загрузки, - текст отображающий сколько непрочитанных писем у пользователя(4), если они есть - анимация подсветки кнопки, если письма есть(5). После некоторого гугла было решено следующее: 1. Для применения собственных свойств к кнопке использовать стиль, в который поместить свои изыски со шрифтами и шаблон, содержащий вышеописанные дополнения. 2. В качестве основного рисунка был выбран векторный вариант картинки, реализованный с помощью объекта Path:
С векторным изображением в WPF, как кажется, проще работать т.к. сам WPF векторный, и, в частности, применять анимацию. (Так ли это?) Как видно из врезки кода выше, картинка создана с помощью встроенного языка описания геометрии, сведения о котором, в целом, найти не сложно. 3. В качестве рисунка на момент загрузки, выбран следующий рисунок
4. Для отображения информации о полученных письмах видится создание контейнера, в который ляжет картинка для красивости фона и TextBlock для отображения количества писем. Чтобы иметь возможность удобно засылать контент думалось создать свойство зависимости, отвечающее за текст в TextBlock 5. Для создания анимации думал создать в шаблоне триггер, отвечающий за свойство Fill элементов типа Path и событие, которое будет его включать. Собственно вопросы: Есть ли какие-то реальные примеры подобного контрола? (В интернете в основном либо куски, либо простые примеры. Это, отчасти и послужило толчком для написания поста.) Как будет лучше организовать структуру такого контрола? Вопрос, на котором я повис на данном этапе - Как правильно группировать элементы типа Path в одну структуру? По мере продвижения, буду скидывать реализацию, может что-то поправят, или кому-то пригодится. Код стиля, который есть сейчас приаттачил как .log файл. Большое спасибо за помощь.
0
|
|||||||||||
| 05.12.2016, 22:22 | |
|
Ответы с готовыми решениями:
25
[WPF] "Path" является неоднозначной ссылкой между "System.Windows.Shapes.Path" и "System.IO.Path" Работа с несколькими jquery-объектами Децентрализованное управление несколькими объектами |
|
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 49
|
|
| 12.12.2016, 14:15 [ТС] | |
|
Спасибо большое.
Ошибки исчезли после того, как унаследовал целевой класс от класса Button. Ранее было наследовано от UIElement. При сборке, видимо, чего-то не хватало, класс не собирался и это интерпретировалось как ошибка XAML, наверное потому, что intelisence не видел сигнатуры целевого класса. Сейчас буду курить почему именно Button. Добавлено через 30 минут Посмотрев структуру классов, стало ясно, что наследоваться от UIElement смысла нет и проблема была в том, что в этом классе не определены почти никакие свойства, относящиеся к какому-либо конкретному контролу. На данный момент, унаследовался от класса Control ниже по иерархии наследования.
0
|
|
|
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 49
|
||
| 13.12.2016, 21:18 [ТС] | ||
|
Например, поменять ему свойство Fill?
0
|
||
|
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
|
|
| 14.12.2016, 10:38 | |
|
Вообще я не видел, чтобы кто-то делал представленным способом. Всё содержимое ControlTemplate описывается прямо в нём. Вы писали, что ваш Path - это ресурс, значит вы хотите, использовать его с нескольких местах. Но поскольку Path - это ресурс, то изменение его будет применяться ко всем местам, где он будет использоваться. Это точно то, что вам нужно? Может быть будет лучше просто прописать Path непосредственно в ControlTemplate?
Я не знаю специфики вашей задачи. Просто описал своё видение.
1
|
|
|
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 49
|
|||||||||||||||||||||
| 15.12.2016, 13:38 [ТС] | |||||||||||||||||||||
|
Есть еще вопрос по теме: Есть ли способ применить анимацию, объявленную в ресурсе к разным объектам?
Воможно ответ кроется где-то на поверхности, но гугл показывает какие-то страшные манипуляции, аж не по себе Например. Есть шаблон для кнопки, в нем размещен контейнер и объекты типа Path:
Эксперименты с Blend показали, что тамошний генератор всегда создает элемент ColorAnimationUsingKeyFrames заточенный под конкретный объект, путем задания параметров, типа таких:
Как и что необходимо модифицировать, чтобы имелась возможность использовать Storyboard для разных объектов одного типа? Спасибо.
0
|
|||||||||||||||||||||
|
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
|
|
| 15.12.2016, 14:06 | |
|
Я с анимациями сам сало работал, может, чего не знаю. Но можно, как вариант, брать Storyboard-ресурс и запускать его.
Попробуйте создать свой наследник TriggerBase<>, который будет вызывать запуск анимации. Передавайте ему значения: EventTargetObject, RoutedEvent, Storyboard, StoryboardTargetObject. Попробуйте покопать у этом направлении. Или, может, кто-то более опытный в деле анимаций подскажет.
0
|
|
|
0 / 0 / 0
Регистрация: 17.02.2015
Сообщений: 49
|
||||||
| 15.12.2016, 16:18 [ТС] | ||||||
|
Вы говорите о коде C#. Я же думал, может быть, существует решение, при котором получится это сделать средствами XAML.
Нашел достаточно интересное решение, но оно относится не к шаблону, а к стилю и мной еще не опробовано. Судя по всему, человек сделал прокладку в виде Объекта UIElement и свойства Opacity.
Должно же быть какое-то решение вопроса)
0
|
||||||
| 15.12.2016, 16:18 | |
|
Работа с несколькими объектами на форме Как уменьшить расстояние между несколькими объектами? Буфер трафарета для сцены с несколькими объектами
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|