Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/64: Рейтинг темы: голосов - 64, средняя оценка - 4.86
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262

Кастомная кнопка в UserControl или UserControl со свойствами кнопки

01.09.2019, 19:54. Показов 16239. Ответов 128
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет,

пытаюсь запихнуть кастомную кнопку в Useк Control. Что-то ерунда какая-то получается.
Можете помочь?

Хотелось бы UC со свойствами кнопки. Чтобы при клике меняла цвет своего Fill. и чтобы handle event был и binding работал, Также, от прилетаещего bool меняла свой Fill.

Спасибо!

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<UserControl x:Class="Button_testing.UserControls.Polygon_Button"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:Button_testing.UserControls"
             mc:Ignorable="d" 
             d:DesignHeight="100" d:DesignWidth="100">
    <Grid>
 
 
       
        <Button Name="button1" Height="90" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="90"
     Content="No content">
 
            <Button.Template>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Margin="5">
                        <Ellipse Stroke="DarkBlue" StrokeThickness="2">
                            <Ellipse.Fill>
                                <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                                    <GradientStop Color="Azure" Offset="0.1" />
                                    <GradientStop Color="CornflowerBlue" Offset="1.1" />
                                </RadialGradientBrush>
                            </Ellipse.Fill>
                        </Ellipse>
 
                        <ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
 
                    </Grid>
                </ControlTemplate>
 
            </Button.Template>
        </Button>
 
    </Grid>
</UserControl>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2019, 19:54
Ответы с готовыми решениями:

Как разместить UserControl поверх другого UserControl
Такая задача. Есть форма. На ней размещена панель panelRight. Также есть два пользовательских контрола (TimelineControl() и Bar()). Потом в...

Не сохраняются значения свойств заданные в дизайнере после создания своего UserControl с дополнительными свойствами
using System.ComponentModel; using System.Windows.Forms; namespace Library { public partial class CellControl : UserControl ...

DP UserControl внутри UserControl MVVM
Есть UC c DP Text &lt;Grid&gt; &lt;TextBlock HorizontalAlignment=&quot;Left&quot; Text=&quot;{Binding Text, ElementName=UC}&quot;...

128
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.10.2019, 16:23
Студворк — интернет-сервис помощи студентам
Ахромчон, понял вас сразу.

Вам требуется отслеживать нажата ЛКМ на элементе или нет. Такое отслеживание называется "поведением" элемента. Нужное вам проведение есть у кнопки, и его нет у Полигона.

Можно ли добавить такое поведение Полигону? Да, можно. Можно и полностью создать свой новый элемент с нуля.
Но нужно ли?

У меня сейчас нет компа. Мне добавить такое поведение Полигону нужно время 20-30 минут.
Со смарта объяснить как это сделать я не смогу.
Нужны хотя бы начальные знания как объявлять свойства зависимостей, отслеживать положение курсора и кнопок мыши, как создавать привязки.
0
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.10.2019, 16:53  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но нужно ли?
Я кинулся в сторону полигона т.к. думал будет проще управлять background через мультибиндинг VM, по сравнению с той кнопкой, что мы с вами здесь вымучили.

И оно так и есть. Fill (polygon) управляется замечательно через мультибиндинг.

А вот кнопка....

Добавлено через 8 минут
что-то "глобально-грандиозное" вроде:
XML
1
2
3
4
5
6
<Button.Style>
  <MultiBinding Converter="{StaticResource StyleConverter}">
    <Binding Source="{StaticResource Background_White}" />
    <Binding Source="{StaticResource Background_Yellow}" />
  </MultiBinding>
</Button.Style>
Только ради того, чтобы из VM поменять background.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.10.2019, 17:11
Ахромчон, легко добавить изменение цвета когда наведён курсор. Так как такое поведение наследуется всеми UI элементами - свойство IsMouseOver.
А вот отслеживание нажатия - есть только у кнопок.

Биндинг или мультибиндинг значения не имеет. Нужно где-то в элементе запомнить нажмите клавиши и создать свойство которое будет возвращать эту информацию.

Если знаете как создавать производные классы, свойства зависимостей, привязки, то могу написать как это следует сделать для Полигона.

Добавлено через 5 минут
Цитата Сообщение от Ахромчон
Только ради того, чтобы из VM поменять background.
Вам надо поменять просто Background или во время нажатия?
0
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.10.2019, 17:31  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вам надо поменять просто Background или во время нажатия?
смотрите,
кнопка со всеми своими "прелестями" IsPressed, IsMouseOver и т.д.
И она меняет цвет в соответствии с данными событиями.
Но, нужно еще кое-что:
из VM при получении комбинации состояний bool (их два, поэтому multibinding), в соответствии с ними меняет свой background, например "PressedBackground".
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.10.2019, 17:38
Ахромчон, в кнопке которая в этой теме, это же без проблем можно сделать. Что у вас не получается?
0
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.10.2019, 18:04  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ахромчон, в кнопке которая в этой теме, это же без проблем можно сделать. Что у вас не получается?
конвертер есть и он работает.
мультибиндинг есть.
Все опробовал на polygon.

Куда воткнуть в контрол кнопки- затрудняюсь.

Добавлено через 22 минуты
MainWindow:

В самой контрол button.

XML
1
Background="{Binding RoutineIsDone, Converter={StaticResource BooleanToBrushConverter_Routine}}"
а как забиндить background к двум? Вот вопрос.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.10.2019, 18:45
Ахромчон, есть же свойство PressedBackground - задаёт цвет при нажатии.
Что мешает сделать привязку к нему?
0
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.10.2019, 19:08  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ахромчон, есть же свойство PressedBackground - задаёт цвет при нажатии.
Что мешает сделать привязку к нему?
PressedBackground - работает по назначению как ей и положено.
Нужно привязать статический background.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2892
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.10.2019, 19:52
Ахромчон, я уже совсем запутался с тем что вы хотите реализовать...
Объясните пошагово поведение во всех состояниях: в таком-то состоянии такой-то цвет, при таких-то действиях, данных такой-то цвет такого-то состояния установить таким-то и т.д
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2019, 19:52

Управление usercontrol из другого usercontrol
На форме размещено 2 usercontrol. Как управлять usercontrol из другого Добавлено через 22 часа 33 минуты Что не кто не поможет?

Вызов свойства кнопки на другом UserControl.xaml.cs
Возник вопрос получения свойства кнопки true на другом UserControl.xaml.cs. На первом UserControl1.xaml.cs кнопка определена как...

Биндинг или DataContext для UserControl
У меня есть простенький UserControl: &lt;UserControl x:Class=&quot;SimpleMVVM.ViewModel.LibraryViewModel&quot; ...

WPF MVVM View и ViewModel или UserControl и DependencyProperty
Не так давно ударился в WPF и шаблон MVVM. Вот такой вопрос возник... У меня есть View которая &quot;собирается&quot; из более мелких View....

Можно ли рисовать сразу на UserControl без Canvas или Grid
Можно ли в SilverLight рисовать сразу на UserControl без Canvas или Grid?


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

Или воспользуйтесь поиском по форуму:
129
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru