0
我對MVVM和它的東西是全新的。 你能幫我正確地將WPF按鈕綁定到ICommand嗎?用MVVM綁定到ICommand
我綁定按鈕:
<Button Command="{Binding OpenWindow}" >
在視圖模型:
Public Sub New()
OpenWindow = New RelayCommand(New Action(Of Object)(AddressOf ShowWindow))
End Sub
Private Sub ShowWindow()
Dim win As New SecondWindow()
win.Show()
End Sub
和我有類RelayCommand爲:
Public Class RelayCommand
Implements ICommand
Private ReadOnly _CanExecute As Func(Of Boolean)
Private ReadOnly _Execute As Action
Public Sub New(ByVal execute As Action)
Me.New(execute, Nothing)
End Sub
Public Sub New(ByVal execute As Action, ByVal canExecute As Func(Of Boolean))
If execute Is Nothing Then
Throw New ArgumentNullException("execute")
End If
_Execute = execute
_CanExecute = canExecute
End Sub
Public Custom Event CanExecuteChanged As EventHandler Implements System.Windows.Input.ICommand.CanExecuteChanged
AddHandler(ByVal value As EventHandler)
If _CanExecute IsNot Nothing Then
AddHandler CommandManager.RequerySuggested, value
End If
End AddHandler
RemoveHandler(ByVal value As EventHandler)
If _CanExecute IsNot Nothing Then
RemoveHandler CommandManager.RequerySuggested, value
End If
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As System.EventArgs)
CommandManager.InvalidateRequerySuggested()
End RaiseEvent
End Event
Public Function CanExecute(ByVal parameter As Object) As Boolean Implements System.Windows.Input.ICommand.CanExecute
If _CanExecute Is Nothing Then
Return True
Else
Return _CanExecute.Invoke
End If
End Function
Public Sub Execute(ByVal parameter As Object) Implements System.Windows.Input.ICommand.Execute
_Execute.Invoke()
End Sub
End Class
通過上述,我有ViewModel構造函數部分中的一個異常說「嵌套sub沒有與委託'Dele相兼容的簽名門子動作()'。我究竟做錯了什麼?