Имеется класс, который наследует в себя Button и дополняет кнопку дополнительной логикой согласно задачам приложения. Сколько я не бился, но похоже, что событие OnPointerEntered срабатывает раньше, чем какое-то магическое спрятаное событие, которое перекрывает отображение моих цветов на цвета из темы.
Собственно вопрос в том, как можно из кода C# научить кнопку менять цвет так, как того хочу я, а не глобально прописано в теме?
Вопрос свелся к следующему: "Как из XAML получить доступ к статическому свойству в коде".
Для этого в app.xaml класс со статическим свойством добавляется в ресурсы: <local:Foo x:Key="Foo"/>
А в нужном месте к нему идет обращение, например так:
MetroUI (приложения на Windows 8+) не поддерживает событие Tregger. Я нашёл подобное решение https://msdn.microsoft.com/en-us/library/windows/a... , но проблема в том, что тогда теряется Content самой кнопки в том время, когда мне нужно просто контролировать цвет фона\рамки из кода.
Т.е. я отменяю стандартные обработчики любых стилей и заменяю их своими уже в коде. В таком варианте всё ок.
Хотя было бы ещё круто сделать выборку цветов из класса-палитры:
public sealed class GameTileBrushes {
public static SolidColorBrush Default = new SolidColorBrush(Color.FromArgb(255, 157, 136, 84));
public static SolidColorBrush Hover = new SolidColorBrush(Color.FromArgb(255, 202, 178, 135));
public static SolidColorBrush Active = new SolidColorBrush(Color.FromArgb(255, 118, 102, 63));
public static SolidColorBrush Opened = new SolidColorBrush(Color.FromArgb(255, 177, 153, 95));
}
Станислав Агафонов: то есть? Сейчас я переделал на события в самом коде примерно так же, как и у вас, только с дополнительной логикой. Пример для hover:
Задача стоит так: есть палитра, согласно которой необходимо изменять цвет фона\рамки. Цвет самого текста задаётся программно в зависимости от внутренней логики. При решении в лоб я столкнулся с тем, что не могу переопределить цвет при наведении и при активности элемента, потому и пошёл писать кастыли.
Если вы можете (и что не маловажно хотите) помочь/научить, то мб лучше свяжемся через Skype или Telegram? ErickSkrauch.