Это выглядит слишком сложно.Не можете ли вы использовать RepeatButton?
Простое решение:
<RepeatButton Click="RepeatButton_Click" Content="Up" />
Код позади:
Private Sub RepeatButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
NumericField += 1
End Sub
Использование команд
Старайтесь избегать ненужного кода в вашем коде позади файла.Вот эскиз с использованием команд
XAML:
<RepeatButton Command="{Binding IncrementField}" Content="Up"></RepeatButton>
Класс помощи.Возможность повторного использования для всех команд внутри вашего проекта:
Public Class ActionCommand
Implements ICommand
Private ReadOnly _executeHandler As Action(Of Object)
Private ReadOnly _canExecuteHandler As Func(Of Object, Boolean)
Public Sub New(ByVal execute As Action(Of Object),
ByVal canExecute As Func(Of Object, Boolean))
If execute Is Nothing Then
Throw New ArgumentNullException("Execute cannot be null")
End If
_executeHandler = execute
_canExecuteHandler = canExecute
End Sub
Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
AddHandler(ByVal value As EventHandler)
AddHandler CommandManager.RequerySuggested, value
End AddHandler
RemoveHandler(ByVal value As EventHandler)
RemoveHandler CommandManager.RequerySuggested, value
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As System.EventArgs)
CommandManager.InvalidateRequerySuggested()
End RaiseEvent
End Event
Public Sub Execute(ByVal parameter As Object) Implements ICommand.Execute
_executeHandler(parameter)
End Sub
Public Function CanExecute(ByVal parameter As Object) As Boolean Implements ICommand.CanExecute
If (_canExecuteHandler Is Nothing) Then
Return True
End If
Return _canExecuteHandler(parameter)
End Function
End Class
И в вашей модели:
_incrementField = New ActionCommand(AddressOf IncrementExecuted, AddressOf IncrementCanExecute)
...
Private Function IncrementCanExecute(ByVal parameter As Object) As Boolean
Return True
End Function
Private Sub IncrementExecuted(ByVal parameter As Object)
NumericField += 1
End Sub
Private _incrementField As ActionCommand
Public ReadOnly Property IncrementField As ActionCommand
Get
Return _incrementField
End Get
End Property