#wpf #vb.net
#wpf #vb.net
Вопрос:
На данный момент у меня есть следующий командный класс:
Public Class SubscribeCommand
Implements ICommand
Private ReadOnly _vm As MainWindowViewModel
Public Sub New(ByVal vm As MainWindowViewModel)
_vm = vm
End Sub
Public Function CanExecute(ByVal parameter As Object) As Boolean Implements System.Windows.Input.ICommand.CanExecute
Return Not String.IsNullOrEmpty(_vm.Symbol)
End Function
Public Event CanExecuteChanged(ByVal sender As Object, ByVal e As System.EventArgs) Implements System.Windows.Input.ICommand.CanExecuteChanged
Public Sub Execute(ByVal parameter As Object) Implements System.Windows.Input.ICommand.Execute
_vm.Subscribe()
End Sub
End Class
В руководстве, которое я прочитал, вы должны реализовать add {} и remove {} для CanExecuteChanged-Event. Но как я могу это сделать с vb.net ?
большое спасибо..
Ответ №1:
Я не думаю, что вам требуется реализовывать элементы добавления и удаления для события CanExecuteChanged. Я почти уверен, что это будет работать просто отлично так, как у вас есть сейчас. Но если бы вы захотели по какой-то причине (например, чтобы оно соответствовало тому, что вы видите в этом сообщении на C #, например), вы бы изменили
Public Event CanExecuteChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Для
Public Custom Event CanExecuteChanged As EventHandler
AddHandler(ByVal value As EventHandler)
CommandManager.RequestSuggested = value
End AddHandler
RemoveHandler(ByVal value As EventHandler)
CommandManager.RequestSuggested -= value
End RemoveHandler
End Event
Комментарии:
1. Не уверен, чего мне здесь не хватает, но в моем проекте, когда я использую этот код, он не компилируется. Говорит вызвать RaiseEvent вместо этого.
Ответ №2:
если вы хотите использовать команды в wpf, пожалуйста, посмотрите на существующие фреймворки wpf. вы найдете по крайней мере две хорошие реализации команд: