Элемент управления WPF, размещенный в элементе управления ElementHost, меняет цвет - PullRequest
0 голосов
/ 11 декабря 2011

Я создаю WPF-элемент управления «Кнопка» и делаю его дочерним по отношению к моему элементу управления ElementHost.

Фон кнопки имеет красный цвет.

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

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

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        System.Windows.Controls.Button but = new System.Windows.Controls.Button();
        but.Background = System.Windows.Media.Brushes.Red;
        elementHost1.Child = but;
    }
}

Это нормально?можно его выключить?

1 Ответ

0 голосов
/ 11 декабря 2011

Да, это нормально.Кнопки WPF всегда создают эффект незаметного изменения цвета, когда они имеют фокус ввода, и это относится к вашей кнопке, поскольку это единственный элемент управления в форме.Это не очень тонко в вашем примере, потому что красный далек от другого синеватого цвета, который циклически проходит кнопка - удалите это назначение фона, чтобы увидеть эффект, как задумано.Попробуйте добавить еще один ElementHost с другой кнопкой WPF к той же форме, и вы увидите, что только сфокусированная кнопка выполняет циклическое изменение цвета.

Что касается того, как его отключить ... Я не знаю, ноБоюсь, это не легко.Я не вижу какого-либо простого свойства на кнопке, которое бы изменило этот эффект.Такие эффекты, как правило, достигаются с помощью шаблонов стилей WPF, которые заставляют взрослых плакать.Вы можете найти обзор MSDN ниже, но обратите внимание, что это предполагает, что вы работаете в WPF и XAML, а не в Windows Forms:

http://msdn.microsoft.com/en-us/library/bb613570.aspx

Я предполагаю, что вам придетсясвяжите измененный стиль Focused с вашей кнопкой, которая не будет выполнять циклическое изменение цвета, или найдите имя ресурса второй кисти (кроме Background), к которой циклично применяется стиль Focused, и установите для этого ресурса тот же цвет, что и у Background.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...