我对一组ToggleButton
有一个奇怪的问题。我使用它们进行评级控制,如下所示:
每个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}}设置为浅黄色,如下所示:
ToggleButton
事件会将所有MouseLeave
的{{1}}重置为以前的状态。
Foreground
事件应该立即将当前和之前ToggleButton
的{{1}}设置为黄金(因此第二张图片中的4颗星应该与第一张图片)。现在问题出现了 - 在此事件处理程序中设置Click
实际上什么也没做!在Foreground
触发之前不会设置背景。
如果我没有设置ToggleButton
和Foreground
事件处理程序,则MouseLeave
处理程序中的MouseEnter
会立即更改,这是所需的行为。但是,悬停功能显然不起作用。
我该怎么做才能解决这个问题?
答案 0 :(得分:2)
在您的事件处理程序上,如果您不希望事件从MouseEnter冒出来,则必须将Handled
属性设置为true
- >点击。这样它就不会立即改变Foreground
。