/// <summary> /// This method is called when the selection changed event occurs. The sender should be the control /// on which this behaviour is attached - so we convert the sender into a <seealso cref="UIElement"/> /// and receive the Command through the <seealso cref="GetChangedCommand"/> getter listed above. /// /// This implementation supports binding of delegate commands and routed commands. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Selection_Changed(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { Selector uiElement = sender as Selector; // Sanity check just in case this was somehow send by something else if (uiElement == null) { return; } ICommand changedCommand = SelectionChangedCommand.GetChangedCommand(uiElement); // There may not be a command bound to this after all if (changedCommand == null) { return; } // Check whether this attached behaviour is bound to a RoutedCommand if (changedCommand is RoutedCommand) { // Execute the routed command (changedCommand as RoutedCommand).Execute(e.AddedItems, uiElement); } else { // Execute the Command as bound delegate changedCommand.Execute(e.AddedItems); } }
private static void uiElement_KeyUp(object sender, KeyEventArgs e) { if (e == null) { return; } // Forward key event only if user has hit the return, BackSlash, or Slash key if (e.Key != Key.Return) { return; } ComboBox uiElement = sender as ComboBox; // Sanity check just in case this was somehow send by something else if (uiElement == null) { return; } ICommand changedCommand = SelectionChangedCommand.GetChangedCommand(uiElement); // There may not be a command bound to this after all if (changedCommand == null) { return; } // Check whether this attached behaviour is bound to a RoutedCommand if (changedCommand is RoutedCommand) { // Execute the routed command (changedCommand as RoutedCommand).Execute(uiElement.Text, uiElement); } else { // Execute the Command as bound delegate changedCommand.Execute(uiElement.Text); } }