|
|
|
@ -7,35 +7,35 @@ namespace Avalonia.Controls |
|
|
|
public class RepeatButton : Button |
|
|
|
{ |
|
|
|
/// <summary>
|
|
|
|
/// Defines the <see cref="Delay"/> property.
|
|
|
|
/// Defines the <see cref="Interval"/> property.
|
|
|
|
/// </summary>
|
|
|
|
public static readonly StyledProperty<int> DelayProperty = |
|
|
|
AvaloniaProperty.Register<Button, int>(nameof(Delay), 100); |
|
|
|
public static readonly StyledProperty<int> IntervalProperty = |
|
|
|
AvaloniaProperty.Register<Button, int>(nameof(Interval), 100); |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Defines the <see cref="InitialDelay"/> property.
|
|
|
|
/// Defines the <see cref="Delay"/> property.
|
|
|
|
/// </summary>
|
|
|
|
public static readonly StyledProperty<int> InitialDelayProperty = |
|
|
|
AvaloniaProperty.Register<Button, int>(nameof(InitialDelay), 300); |
|
|
|
public static readonly StyledProperty<int> DelayProperty = |
|
|
|
AvaloniaProperty.Register<Button, int>(nameof(Delay), 300); |
|
|
|
|
|
|
|
private DispatcherTimer _repeatTimer; |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets the amount of time, in milliseconds, of repeating clicks.
|
|
|
|
/// </summary>
|
|
|
|
public int Delay |
|
|
|
public int Interval |
|
|
|
{ |
|
|
|
get { return GetValue(DelayProperty); } |
|
|
|
set { SetValue(DelayProperty, value); } |
|
|
|
get { return GetValue(IntervalProperty); } |
|
|
|
set { SetValue(IntervalProperty, value); } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Gets or sets the amount of time, in milliseconds, to wait before repeating begins.
|
|
|
|
/// </summary>
|
|
|
|
public int InitialDelay |
|
|
|
public int Delay |
|
|
|
{ |
|
|
|
get { return GetValue(InitialDelayProperty); } |
|
|
|
set { SetValue(InitialDelayProperty, value); } |
|
|
|
get { return GetValue(DelayProperty); } |
|
|
|
set { SetValue(DelayProperty, value); } |
|
|
|
} |
|
|
|
|
|
|
|
private void StartTimer() |
|
|
|
@ -48,13 +48,13 @@ namespace Avalonia.Controls |
|
|
|
|
|
|
|
if (_repeatTimer.IsEnabled) return; |
|
|
|
|
|
|
|
_repeatTimer.Interval = TimeSpan.FromMilliseconds(InitialDelay); |
|
|
|
_repeatTimer.Interval = TimeSpan.FromMilliseconds(Delay); |
|
|
|
_repeatTimer.Start(); |
|
|
|
} |
|
|
|
|
|
|
|
private void RepeatTimerOnTick(object sender, EventArgs e) |
|
|
|
{ |
|
|
|
var interval = TimeSpan.FromMilliseconds(Delay); |
|
|
|
var interval = TimeSpan.FromMilliseconds(Interval); |
|
|
|
if (_repeatTimer.Interval != interval) |
|
|
|
{ |
|
|
|
_repeatTimer.Interval = interval; |
|
|
|
|