What I rzeczywiście skończyło się to zrobić w VB:
Utwórz nową klasę publiczną dla moich poleceń niestandardowych, ponieważ to było u ndesirable mieć moją klasę MainWindow jak Udostępnienie:
Public Class Commands
Public Shared myCmd As New RoutedCommand
End Class
Tworzenie Execute i metody CanExecute które działają żądany kod. Te dwie metody zostały stworzone w kodzie MainWindow tyle:
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
Tworzenie wiązania w MainWindow kodu za polecenie i dodać dwóch metod obsługi do wiązania (jest to część, która jest zupełnie inna od C# i 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
Dodaj nowe polecenie niestandardowe do obiektu przycisku w UserControl. Dzięki komendzie niestandardowej nie było to możliwe w XAML, więc musiałem to zrobić z opóźnieniem kodu. Klasa Komendy musiała być publiczny więc polecenia były dostępne w tym UserControl:
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
Yp, kolejna odpowiedź 404, tym razem nawet zaakceptowana! – Rbjz
Wykopałem artykuł z internetowego archiwum "The Wayback Machine". Nie jestem pewien, czy najlepiej było unikać niedziałających linków, gdy strona już nie istnieje, a treść artykułu jest zbyt duża, by ją tu zawrzeć. https://web.archive.org/web/20121102095816/http://www.switchonthecode.com/tutorials/wpf-tutorial-command-bindings-and-custom-commands –
samouczek miał trochę za dużo czytania mój apetyt. Zaproponowałem, aby dać przykład działania. – Rbjz