Глядя на код в Reflector, ButtonBase вызывает OnClick из OnMouseEnter, если для ClickMode установлено значение Hover, поэтому вы не можете установить ничего, что предотвратит этот первоначальный щелчок. Вы можете создать подкласс 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.