Wpf - 如何正确使用MouseEnter,Click和MouseLeave来更改ToggleButton的背景?

时间:2014-04-23 18:08:36

标签: c# wpf wpf-controls

我对一组ToggleButton有一个奇怪的问题。我使用它们进行评级控制,如下所示:

rating control

每个ToggleButton都会收听以下事件:

rating_button.MouseEnter += new MouseEventHandler(rating_button_mouse_entered);
rating_button.Click += new RoutedEventHandler(rating_button_clicked);
rating_button.MouseLeave += new MouseEventHandler(rating_button_mouse_left);

当鼠标进入ToggleButton时,MouseEnter事件将当前和之前Foreground的{​​{1}}设置为浅黄色,如下所示:

hover and click

ToggleButton事件会将所有MouseLeave的{​​{1}}重置为以前的状态。

Foreground事件应该立即将当前和之前ToggleButton的{​​{1}}设置为黄金(因此第二张图片中的4颗星应该与第一张图片)。现在问题出现了 - 在此事件处理程序中设置Click实际上什么也没做!在Foreground触发之前不会设置背景。

如果我没有设置ToggleButtonForeground事件处理程序,则MouseLeave处理程序中的MouseEnter会立即更改,这是所需的行为。但是,悬停功能显然不起作用。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:2)

在您的事件处理程序上,如果您不希望事件从MouseEnter冒出来,则必须将Handled属性设置为true - >点击。这样它就不会立即改变Foreground