Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Юрий Ч
5 / 5 / 0
Регистрация: 16.05.2012
Сообщений: 164
1

Как изменить цвет ToggleButton при нажатии?

11.12.2014, 13:42. Просмотров 2400. Ответов 3
Метки нет (Все метки)

Добрый день!

Подскажите, пожалуйста, как изменить цвет кнопки ToggleButton при нажатии, а при отпускании вернуть прежний цвет.

Спасибо.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2014, 13:42
Ответы с готовыми решениями:

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при нажатии на него и...

Как изменить цвет кнопки при нажатии?
Доброго времени суток. Ребята, подскажите пожалуйста как изменить цвет кнопки при нажатии?

Как изменить цвет кнопки при нажатии на нее?
в процедуре procedure Form1.button2_Click(sender: Object; e: EventArgs); Пишу...

Как изменить цвет панели при нажатии на нее?
Нужно чтобы при нажатии на панель менялся цвет этой панели. прошу помочь

3
monstrilla
49 / 49 / 18
Регистрация: 26.07.2012
Сообщений: 188
11.12.2014, 15:09 2
Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

Могу предложить такой темплейт

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
<ControlTemplate TargetType="{x:Type ToggleButton}">
                    <Border BorderBrush="Orange" 
                            BorderThickness="3" 
                            CornerRadius="3" 
                            Margin="1" 
                            Name="Border" 
                            Background="{TemplateBinding Background}">
                        <Grid>
                            <Rectangle Name="FocusCue" 
                                   Visibility="Hidden" 
                                   Stroke="Black"
                                   StrokeThickness="1" 
                                   StrokeDashArray="1 2"
                                   SnapsToDevicePixels="True" ></Rectangle>
                            <ContentPresenter  Margin="3" 
                                            HorizontalAlignment="Center" 
                                            VerticalAlignment="Center"/>
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="IndianRed" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="DarkKhaki" />
                        </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Setter TargetName="Border" Property="Background" Value="Red" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="Orange" />
                        </Trigger>
                        <Trigger Property="IsKeyboardFocused" Value="True">
                            <Setter TargetName="FocusCue" Property="Visibility" Value="Visible" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="Border" Property="Background" Value="DarkRed" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
1
Ev_Hyper
Заблокирован
11.12.2014, 23:02 3
monstrilla, вы не могли бы подсказать, как ваш вариант должен работать?
Как изменить цвет ToggleButton при нажатии?

Странно, что такой способ для Background-а не сработал:
XML
1
2
3
    <Grid>
        <ToggleButton Content="ToggleButton"  Name="tglbutton" HorizontalAlignment="Left" Margin="172,134,0,0" VerticalAlignment="Top" Height="68" Width="159" Background="Orange"/>
    </Grid>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            tglbutton.Click += tglbutton_Click;
        }
 
        void tglbutton_Click(object sender, RoutedEventArgs e)
        { 
            if (tglbutton.IsChecked == true)
                tglbutton.Foreground = new SolidColorBrush(Colors.Black);
            else if (tglbutton.IsChecked == false)
                tglbutton.Foreground = new SolidColorBrush(Colors.Green);
        }
    }
Хотелось бы узнать как все-таки правильно решить эту задачу.
0
monstrilla
49 / 49 / 18
Регистрация: 26.07.2012
Сообщений: 188
12.12.2014, 09:03 4
Лучший ответ Сообщение было отмечено Ev_Hyper как решение

Решение

Нужно просто присвоить шаблон свойству Template контрола

XML
1
2
3
4
5
6
7
<ToggleButton Width="100" Height="100">
    <ToggleButton.Template>
          <ControlTemplate TargetType="{x:Type ToggleButton}">
              ... 
          </ControlTemplate> 
    </ToggleButton.Template>
</ToggleButton>
Или оберните ControlTemplate в стиль, а стиль примените к баттону. Это дает возможность многократного использования шаблона.

XML
1
2
3
4
5
6
7
8
9
<Style TargetType="{x:Type ToggleButton}" x:Key="Style">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        ...     
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Использование:

XML
1
<ToggleButton Width="100" Height="100" Style="{StaticResource Style}"/>
1
12.12.2014, 09:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2014, 09:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как при нажатии на Button изменить цвет строки в DBGrid?
Как при нажатии на Button изменить цвет строки в DBGrid. К примеру есть условие если первый...

Как отследить статус клавиши CTRL при нажатии на кнопку ToggleButton?
Нужно при нажатии ToggleButton поймать - нажата ли в этот момент клавиша контрол и в соответсвии с...

Изменить цвет квадрата при нажатии
Добрый день. Только начал освоение WInAPI. Была поставлена задача: по нажатию левой кнопкой мыши...

Изменить цвет ссылки при наведении и нажатии
Имеется кусок кода: &lt;td style=&quot;width:33.3%; border:2px solid #707070; text-align: center&quot;&gt;&lt;div...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.