0
ClickMode为'Hover'时,如何在RepeatButton上设置初始延迟(在第一次点击事件被触发之前)?WPF在RepeatButton上的初始延迟
ClickMode为'Hover'时,如何在RepeatButton上设置初始延迟(在第一次点击事件被触发之前)?WPF在RepeatButton上的初始延迟
查看Reflector中的代码,如果ClickMode设置为悬停,ButtonBase会从OnMouseEnter调用OnClick,因此没有任何设置可以阻止初始点击。你可以继承的RepeatButton,并尝试完全抑制的OnClick调用,如果它OnMouseEnter在期间作了发言:
public class DelayRepeatButton
: RepeatButton
{
private bool duringMouseEnter = false;
protected override void OnMouseEnter(MouseEventArgs e)
{
try
{
duringMouseEnter = true;
base.OnMouseEnter(e);
}
finally
{
duringMouseEnter = false;
}
}
protected override void OnClick()
{
if (!duringMouseEnter)
{
base.OnClick();
}
}
}
如果您希望为其他ClickMode值工作,你可以做的onkeydown,的onkeyup,OnLeftMouseButtonDown和OnLeftMouseButtonUp类似的东西。
这就是完美! – NVM 2010-08-14 13:48:19