Изменение динамически создаваемого фона кнопки в WPF - PullRequest
1 голос
/ 12 декабря 2010

У меня есть следующий код для динамического создания и добавления кнопки на панель:

StackPanel topPanel=...;
Button button=new Button();

button.Content="New Button "+topPanel.Children.Count;      

// Set button background to a red/yellow linear gradient
// Create a default background brush
var bgBrush=new LinearGradientBrush(new GradientStopCollection(
   new GradientStop[] {new GradientStop(Color.FromRgb(255,255,200),0.5),
                       new GradientStop(Color.FromRgb(255,200,200),0.5)}));
// Create a more intense mouse over background brush
var bgMouseOverBrush=new LinearGradientBrush(new GradientStopCollection(
   new GradientStop[] {new GradientStop(Color.FromRgb(255,255,100),0.5),
                       new GradientStop(Color.FromRgb(255,100,100),0.5)}));

// Set the button's background
button.Background=bgBrush;
// Dynamically, add the button to the panel
topPanel.Children.Add(button);

Проблема в том, что, когда я перемещаю курсор мыши над кнопкой, он возвращается к своему предыдущему голубому фону. Теперь я прочитал, что мне нужен триггер при наведении курсора, но я понятия не имею, как сделать это программно только для этой кнопки, отдельно. По сути, я хочу, чтобы его фон изменился на bgMouseOverBrush, когда курсор мыши находится над ним, и обратно на bgBrush, когда его нет.

1 Ответ

2 голосов
/ 12 декабря 2010

Попробуйте это:

    // In the constructor or any approp place
    button.MouseEnter += new MouseEventHandler(b_MouseEnter);
    button.MouseLeave += new MouseEventHandler(b_MouseLeave);

    void b_MouseLeave(object sender, MouseEventArgs e)
    {
        button.Background=bgBrush;
    }

    void b_MouseEnter(object sender, MouseEventArgs e)
    {
        button.Background = bgMouseOverBrush;
    }

Надеюсь, это поможет.

EDIT

Mouse Enter MouseOver

Mouse Out Mouse Out

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