Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
mkostoevr
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 369
Записей в блоге: 2
1

Как поменять изображение на кнопке через код?

31.05.2017, 20:39. Просмотров 882. Ответов 4
Метки нет (Все метки)

Здравия всем!

Дело такое, создаётся кнопка так:
XML
1
2
3
<Button x:Name="button_window_state" HorizontalAlignment="Right" Margin="0,0,22,0" VerticalAlignment="Top" Width="22" Click="WindowStating" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}" Height="22">
    <Image Source="images/button_maximize.png"></Image>
</Button>
Эта кнопка отвечает за сворачивание и разворачивание окна.

Мне нужно, чтобы при клике по ней его иконка менялась.

Кот вот такой:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private void WindowStating(object sender, RoutedEventArgs e)
        {
            if (this.WindowState == WindowState.Normal)
            {
                this.WindowState = WindowState.Maximized;
                // Поменять картинку на кнопке на "Свернуть"
            }
            else
            {
                this.WindowState = WindowState.Normal;
                // Поменять картинку на кнопке на "Развернуть"
            }
        }
А как это можно сделать?

При помощи ДатаТриггеров делать не получается, т. к. такой триггер, почему-то, не работает с
XML
1
<Image/>
. Как ещё можно такое реализовать?

Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2017, 20:39
Ответы с готовыми решениями:

Как поменять изображение в БД, через Админку?
Метод контроллера, обеспечивающий запись информации (в том числе и картинки) в БД: ...

Как по кнопке открыть изображение в новом окне
По нажатии на кнопку открывается новое окно, содержащее имя человека, его питомца и фотографию...

Загрузить shapefile в базу Postgresql по кнопке в форме через код cmd
День добрый! Задача такая: загрузить shapefile в базу Postgresql по кнопке в форме через код cmd....

Картинка на кнопке. Как поменять расположение?
Привет всем. Обыскался, но так и не нашел, может быть ослеп еще.. Но не могу найти как...

Как в real-time поменять текст, отображающийся на кнопке?
День добрый! У меня есть кнопка с текстом &quot;Стоп&quot;. Нужно, чтобы при нажатии на неё, надпись...

4
HF
183 / 172 / 58
Регистрация: 09.09.2011
Сообщений: 649
Завершенные тесты: 19
01.06.2017, 02:02 2
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

При уже созданном коде, быстро будет - дать имя картинке
XML
1
<Image x:Name="coin" Source="http://www.cyberforum.ru/images/button_maximize.png"></Image>
и напрямую менять контент
C#
1
coin.Source = new BitmapImage(new Uri(ImagePath));
1
_dm666
3 / 3 / 4
Регистрация: 03.08.2014
Сообщений: 19
01.06.2017, 07:40 3
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Можно через стиль
C#
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<Window
    x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WpfApp1"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Name="wnd"
    Title="MainWindow"
    Width="525"
    Height="350"
    mc:Ignorable="d">
    <Grid>
        <Button
            x:Name="button"
            Width="33"
            Height="33"
            Margin="169,96,0,0"
            HorizontalAlignment="Left"
            VerticalAlignment="Top"
            Click="button_Click"
            Content="">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Background">
                        <Setter.Value>
                            <ImageBrush ImageSource="launcher_bullet-green.png" Stretch="Fill" />
                        </Setter.Value>
                    </Setter>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}">
                                <Grid>
                                    <Image
                                        Name="img"
                                        Source="launcher_bullet-green.png"
                                        Stretch="Fill" />
                                    <ContentPresenter
                                        HorizontalAlignment="Center"
                                        VerticalAlignment="Center"
                                        ContentSource="Content" />
                                </Grid>
                                <ControlTemplate.Triggers>
                                    <DataTrigger Binding="{Binding ElementName=wnd, Path=WindowState}" Value="Maximized">
                                        <Setter TargetName="img" Property="Source" Value="launcher_bullet-red.png" />
                                    </DataTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Button.Style>
        </Button>
    </Grid>
</Window>
1
mkostoevr
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 369
Записей в блоге: 2
01.06.2017, 09:31  [ТС] 4
Если кто-то зайдёт сюда ха ответом, чтобы не выскочила ошиюка нужно сказать, что изображение мы ищем изображение относительно программы:

C#
1
coin.Source = new BitmapImage(new Uri(ImagePath, UriKind.Relative));
0
HF
183 / 172 / 58
Регистрация: 09.09.2011
Сообщений: 649
Завершенные тесты: 19
01.06.2017, 10:09 5
Цитата Сообщение от mkostoevr Посмотреть сообщение
чтобы не выскочила ошиюка нужно сказать, что изображение мы ищем изображение относительно программы
Тоже верно. Я то давал пример по своему коду - он картинку из интырнета подтягивал. Хорошее замечание. У себя в сообщении сделать изменения уже не получается.
1
01.06.2017, 10:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2017, 10:09

Поменять цвет и надпись в кнопке и при повторном нажатии поменять на изначальный
В заголовке в принципе описана моя задумка, поменять цвет кнопки не тяжело, но вот незнаю как...

Как поменять свойство Text в кнопке Button с его сохранением
Доброго всем дня! Такой вот вопрос есть две формы на первой форме расположена кнопка Batton1 на...

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


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

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

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