Я не знаю наверняка, но я могу предоставить некоторую информацию, которая поможет.
Недавно я попытался сделать что-то еще более простое: изменить цвет фона на кнопке - фактически ToggleButton. Я обнаружил, что установка свойства Background в коде ToggleButton не дает ожидаемого результата. Это удивило меня. Осмотритесь вокруг, и вы увидите, "как мне установить фон для кнопки ToggleButton?" это общий вопрос, и, кажется, нет простого ответа. Я узнал, почему это так сложно.
ToggleButton имеет ControlTemplate, который обеспечивает визуальное представление объекта в действии. Внутри шаблона ControlTemplate по умолчанию предусмотрены анимации для различных переходов состояний. Когда кнопка нажимается, появляется анимация, которую выполняет WPF (я полагаю, что это для WPF4, Silverlight и не уверен насчет предыдущих версий). Когда вы зависаете, появляется другая анимация. И так далее. Кнопка также имеет шаблон управления . Есть нечто, называемое VisualStateManager, которое помогает управлять всеми этими анимациями.
В каждой анимации используется множество цветов, все они жестко закодированы в шаблон по умолчанию (неявный) и не отображаются именованными свойствами. Вы не можете изменить их, не открывая капот ControlTemplate. Свойство Background играет незначительную роль в появлении всех этих анимаций. Другими словами, Фон не делает то, что вы могли ожидать.
Вы можете столкнуться с тем же. Я не эксперт WPF, поэтому хеджирую.
Возможные способы получить то, что вы хотите:
вместо установки фона, установите свойство BorderBrush
. Это кисть, используемая для рисования
Кнопка, по умолчанию ControlTemplate, я думаю.
создайте свой собственный элемент управления, проще, без анимаций в шаблоне ControlTemplate, и разрешите фону работать так, как вам хочется.
создайте измененный шаблон ControlTemplate и примените его в качестве стиля к кнопке на вашей странице. Вот введение .