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