Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Input / Command / CommandBinding.cs / 1 / CommandBinding.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Windows; using System.Windows.Markup; using MS.Internal; using System.Security; using System.Security.Permissions; namespace System.Windows.Input { ////// CommandBinding - Command-EventHandlers map /// CommandBinding acts like a map for EventHandlers and Commands. /// PreviewExecute/Execute, PreviewCanExecute/CanExecute handlers /// can be added at CommandBinding which will exist at Element level /// in the form of a Collection and will be invoked when the system /// is routing the corresponding RoutedEvents. /// public class CommandBinding { #region Constructors ////// Default Constructor - required to allow creation from markup /// public CommandBinding() { } ////// Constructor /// /// Command associated with this binding. public CommandBinding(ICommand command) : this(command, null, null) { } ////// Constructor /// /// Command associated with this binding. /// Handler associated with executing the command. public CommandBinding(ICommand command, ExecutedRoutedEventHandler executed) : this(command, executed, null) { } ////// Constructor /// /// Command associated with this binding. /// Handler associated with executing the command. /// Handler associated with determining if the command can execute. public CommandBinding(ICommand command, ExecutedRoutedEventHandler executed, CanExecuteRoutedEventHandler canExecute) { if (command == null) { throw new ArgumentNullException("command"); } _command = command; if (executed != null) { Executed += executed; } if (canExecute != null) { CanExecute += canExecute; } } #endregion #region Public Properties ////// Command associated with this binding /// [Localizability(LocalizationCategory.NeverLocalize)] // cannot be localized public ICommand Command { get { return _command; } set { if (value == null) { throw new ArgumentNullException("value"); } _command = value; } } #endregion #region Public Events ////// Called before the command is executed. /// public event ExecutedRoutedEventHandler PreviewExecuted; ////// Called when the command is executed. /// public event ExecutedRoutedEventHandler Executed; ////// Called before determining if the command can be executed. /// public event CanExecuteRoutedEventHandler PreviewCanExecute; ////// Called to determine if the command can be executed. /// public event CanExecuteRoutedEventHandler CanExecute; #endregion #region Implementation ////// Calls the CanExecute or PreviewCanExecute event based on the event argument's RoutedEvent. /// /// The sender of the event. /// Event arguments. internal void OnCanExecute(object sender, CanExecuteRoutedEventArgs e) { if (!e.Handled) { if (e.RoutedEvent == CommandManager.CanExecuteEvent) { if (CanExecute != null) { CanExecute(sender, e); if (e.CanExecute) { e.Handled = true; } } else if (!e.CanExecute) { // If there is an Executed handler, then the command can be executed. if (Executed != null) { e.CanExecute = true; e.Handled = true; } } } else // e.RoutedEvent == CommandManager.PreviewCanExecuteEvent { if (PreviewCanExecute != null) { PreviewCanExecute(sender, e); if (e.CanExecute) { e.Handled = true; } } } } } private bool CheckCanExecute(object sender, ExecutedRoutedEventArgs e) { CanExecuteRoutedEventArgs canExecuteArgs = new CanExecuteRoutedEventArgs(e.Command, e.Parameter); canExecuteArgs.RoutedEvent = CommandManager.CanExecuteEvent; // Since we don't actually raise this event, we have to explicitly set the source. canExecuteArgs.Source = e.OriginalSource; canExecuteArgs.OverrideSource(e.Source); OnCanExecute(sender, canExecuteArgs); return canExecuteArgs.CanExecute; } ////// Calls Executed or PreviewExecuted based on the event argument's RoutedEvent. /// /// The sender of the event. /// Event arguments. internal void OnExecuted(object sender, ExecutedRoutedEventArgs e) { if (!e.Handled) { if (e.RoutedEvent == CommandManager.ExecutedEvent) { if (Executed != null) { if (CheckCanExecute(sender, e)) { Executed(sender, e); e.Handled = true; } } } else // e.RoutedEvent == CommandManager.PreviewExecutedEvent { if (PreviewExecuted != null) { if (CheckCanExecute(sender, e)) { PreviewExecuted(sender, e); e.Handled = true; } } } } } #endregion #region Data private ICommand _command; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Windows; using System.Windows.Markup; using MS.Internal; using System.Security; using System.Security.Permissions; namespace System.Windows.Input { ////// CommandBinding - Command-EventHandlers map /// CommandBinding acts like a map for EventHandlers and Commands. /// PreviewExecute/Execute, PreviewCanExecute/CanExecute handlers /// can be added at CommandBinding which will exist at Element level /// in the form of a Collection and will be invoked when the system /// is routing the corresponding RoutedEvents. /// public class CommandBinding { #region Constructors ////// Default Constructor - required to allow creation from markup /// public CommandBinding() { } ////// Constructor /// /// Command associated with this binding. public CommandBinding(ICommand command) : this(command, null, null) { } ////// Constructor /// /// Command associated with this binding. /// Handler associated with executing the command. public CommandBinding(ICommand command, ExecutedRoutedEventHandler executed) : this(command, executed, null) { } ////// Constructor /// /// Command associated with this binding. /// Handler associated with executing the command. /// Handler associated with determining if the command can execute. public CommandBinding(ICommand command, ExecutedRoutedEventHandler executed, CanExecuteRoutedEventHandler canExecute) { if (command == null) { throw new ArgumentNullException("command"); } _command = command; if (executed != null) { Executed += executed; } if (canExecute != null) { CanExecute += canExecute; } } #endregion #region Public Properties ////// Command associated with this binding /// [Localizability(LocalizationCategory.NeverLocalize)] // cannot be localized public ICommand Command { get { return _command; } set { if (value == null) { throw new ArgumentNullException("value"); } _command = value; } } #endregion #region Public Events ////// Called before the command is executed. /// public event ExecutedRoutedEventHandler PreviewExecuted; ////// Called when the command is executed. /// public event ExecutedRoutedEventHandler Executed; ////// Called before determining if the command can be executed. /// public event CanExecuteRoutedEventHandler PreviewCanExecute; ////// Called to determine if the command can be executed. /// public event CanExecuteRoutedEventHandler CanExecute; #endregion #region Implementation ////// Calls the CanExecute or PreviewCanExecute event based on the event argument's RoutedEvent. /// /// The sender of the event. /// Event arguments. internal void OnCanExecute(object sender, CanExecuteRoutedEventArgs e) { if (!e.Handled) { if (e.RoutedEvent == CommandManager.CanExecuteEvent) { if (CanExecute != null) { CanExecute(sender, e); if (e.CanExecute) { e.Handled = true; } } else if (!e.CanExecute) { // If there is an Executed handler, then the command can be executed. if (Executed != null) { e.CanExecute = true; e.Handled = true; } } } else // e.RoutedEvent == CommandManager.PreviewCanExecuteEvent { if (PreviewCanExecute != null) { PreviewCanExecute(sender, e); if (e.CanExecute) { e.Handled = true; } } } } } private bool CheckCanExecute(object sender, ExecutedRoutedEventArgs e) { CanExecuteRoutedEventArgs canExecuteArgs = new CanExecuteRoutedEventArgs(e.Command, e.Parameter); canExecuteArgs.RoutedEvent = CommandManager.CanExecuteEvent; // Since we don't actually raise this event, we have to explicitly set the source. canExecuteArgs.Source = e.OriginalSource; canExecuteArgs.OverrideSource(e.Source); OnCanExecute(sender, canExecuteArgs); return canExecuteArgs.CanExecute; } ////// Calls Executed or PreviewExecuted based on the event argument's RoutedEvent. /// /// The sender of the event. /// Event arguments. internal void OnExecuted(object sender, ExecutedRoutedEventArgs e) { if (!e.Handled) { if (e.RoutedEvent == CommandManager.ExecutedEvent) { if (Executed != null) { if (CheckCanExecute(sender, e)) { Executed(sender, e); e.Handled = true; } } } else // e.RoutedEvent == CommandManager.PreviewExecutedEvent { if (PreviewExecuted != null) { if (CheckCanExecute(sender, e)) { PreviewExecuted(sender, e); e.Handled = true; } } } } } #endregion #region Data private ICommand _command; #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CreateUserErrorEventArgs.cs
- Control.cs
- ElementNotAvailableException.cs
- BufferedWebEventProvider.cs
- CreateUserWizardStep.cs
- InteropAutomationProvider.cs
- wgx_render.cs
- ScaleTransform.cs
- ListenerElementsCollection.cs
- UserControlBuildProvider.cs
- SafeNativeMethods.cs
- ComNativeDescriptor.cs
- XamlValidatingReader.cs
- ListViewCancelEventArgs.cs
- VisualTreeUtils.cs
- Switch.cs
- ApplicationServiceManager.cs
- TransactionScope.cs
- HtmlTableCellCollection.cs
- UnicodeEncoding.cs
- xamlnodes.cs
- DropShadowBitmapEffect.cs
- ProtocolsConfigurationEntry.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- GB18030Encoding.cs
- ExtensionSurface.cs
- XmlSchemaCompilationSettings.cs
- PeerNameRecord.cs
- ParameterCollection.cs
- ExpressionBindingCollection.cs
- StyleCollection.cs
- XmlSchemaRedefine.cs
- ButtonBase.cs
- ModelPerspective.cs
- TreeViewItemAutomationPeer.cs
- SqlAliaser.cs
- PartialList.cs
- Base64Decoder.cs
- DataGridState.cs
- IntSecurity.cs
- BoundColumn.cs
- CompressEmulationStream.cs
- RegistryDataKey.cs
- WebPartCloseVerb.cs
- MetabaseServerConfig.cs
- TabControlCancelEvent.cs
- CryptoApi.cs
- WsiProfilesElementCollection.cs
- SchemaMapping.cs
- PrimitiveType.cs
- UriExt.cs
- X509Extension.cs
- NumberFormatInfo.cs
- StrongTypingException.cs
- TextElement.cs
- ButtonColumn.cs
- SchemaLookupTable.cs
- WebPartTracker.cs
- RSACryptoServiceProvider.cs
- Soap12ProtocolReflector.cs
- OdbcConnection.cs
- ReadOnlyCollection.cs
- util.cs
- Transactions.cs
- WarningException.cs
- FixedPosition.cs
- Msec.cs
- IdentityHolder.cs
- RelatedPropertyManager.cs
- SafeProcessHandle.cs
- TemplateContent.cs
- OdbcConnectionFactory.cs
- SmiTypedGetterSetter.cs
- InfoCardBaseException.cs
- ArrayEditor.cs
- HtmlImage.cs
- CoreSwitches.cs
- SmiRequestExecutor.cs
- XmlSchemaAttributeGroupRef.cs
- RewritingSimplifier.cs
- TraceLevelStore.cs
- ScriptResourceHandler.cs
- baseaxisquery.cs
- BitmapPalette.cs
- DbInsertCommandTree.cs
- PointAnimationBase.cs
- ConfigurationManagerHelper.cs
- Size3DValueSerializer.cs
- EditorBrowsableAttribute.cs
- SpecialFolderEnumConverter.cs
- QueryAsyncResult.cs
- XPathSingletonIterator.cs
- SafeReadContext.cs
- TextSimpleMarkerProperties.cs
- HtmlMeta.cs
- OpCellTreeNode.cs
- WpfWebRequestHelper.cs
- _NetworkingPerfCounters.cs
- ValidationSummary.cs
- TokenBasedSetEnumerator.cs