Страницы

Поиск по вопросам

понедельник, 17 июня 2019 г.

Поворот кнопки WPF C# кодом

Хочу при клике вращать кнопку. Подумал, что должно так работать:
void new_button_click(object sender, RoutedEventArgs e) { Button btn = sender as Button; var transform = btn.RenderTransform as RotateTransform; transform.Angle += 90; }
Но не работает)) Что не так? Хочу поворот реализовать именно C# кодом, не XAML. При клике ругается на эту строку:
transform.Angle += 90;
Исключение:
Ссылка на объект не указывает на экземпляр объекта.


Ответ

Из Вашего кода получается, что в этой строке:
var transform = btn.RenderTransform as RotateTransform;
получаем значение null, поэтому далее получаем исключение Ссылка на объект не указывает на экземпляр объекта при обращении к transform.Angle. Поэтому следует добавить проверку, а затем уже поворот, попробуйте так:
void new_button_click(object sender, RoutedEventArgs e) { Button btn = sender as Button; if(btn != null) { var rotateTransform = btn.RenderTransform as RotateTransform; var transform = new RotateTransform(90 + (rotateTransform?.Angle ?? 0)); btn.RenderTransform = transform; } }
В данном примере кнопка поворачивается на 90 градусов после каждого нажатия.
Полезные ссылки:
Transforms Overview Свойство UIElement.RenderTransform How to: Rotate an Object

Комментариев нет:

Отправить комментарий