Что мне действительно пришлось сделать в VB:
Создать новый открытый класс для моих пользовательских команд, потому что было нежелательно иметь мой класс MainWindow как Public:
Public Class Commands
Public Shared myCmd As New RoutedCommand
End Class
Создайте методы Execute и CanExecute, которые запускают нужный код.Эти два метода были созданы в коде MainWindow:
Class MainWindow
Private Sub myCmdCanExecute(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
e.CanExecute = True
e.Handled = True
End Sub
Private Sub myCmdExecuted(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
//Do stuff here...
e.Handled = True
End Sub
End Class
Создайте привязку Command в выделенном коде MainWindow и добавьте два метода-обработчика в привязку (это та часть, которая сильно отличается в C #и VB):
Class MainWindow
Public Sub New()
// This call is required by the designer.
InitializeComponent()
//Add any initialization after the InitializeComponent() call.
//Create command bindings.
Dim cb As New CommandBinding(Commands.myCmd)
AddHandler cb.CanExecute, AddressOf myCmdCanExecute
AddHandler cb.Executed, AddressOf myCmdExecuted
Me.CommandBindings.Add(cb)
End Sub
End Class
Добавьте новую пользовательскую команду к объекту кнопки в UserControl.С пользовательской командой это не представляется возможным в XAML, поэтому я должен был сделать это в коде позади.Класс Commands должен быть общедоступным, чтобы команды были доступны в этом пользовательском элементе управления:
Public Class myUserControl
Public Sub New()
//This call is required by the designer.
InitializeComponent()
// Add any initialization after the InitializeComponent() call.
myButton.Command = Commands.myCmd
End Sub
End Class