Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Input / Command / InputBinding.cs / 1 / InputBinding.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Security; // SecurityCritical, TreatAsSafe using System.Security.Permissions; using System.Windows; using System.Windows.Markup; using System.ComponentModel; namespace System.Windows.Input { ////// InputBinding - InputGesture and ICommand combination /// Used to specify the binding between Gesture and Command at Element level. /// public class InputBinding : DependencyObject, ICommandSource { #region Constructor ////// Default Constructor - needed to allow markup creation /// protected InputBinding() { } ////// Constructor /// /// Command /// Input Gesture ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// TreatAsSafe - Calls CheckSecureCommand which does the appropriate demand. /// [SecurityCritical] public InputBinding(ICommand command, InputGesture gesture) { if (command == null) throw new ArgumentNullException("command"); if (gesture == null) throw new ArgumentNullException("gesture"); // Check before assignment to avoid continuation CheckSecureCommand(command, gesture); _command = command; _gesture = gesture; } #endregion Constructor //----------------------------------------------------- // // Public Methods // //----------------------------------------------------- #region Public Methods ////// Command Object associated /// ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// PublicOk - Calls CheckSecureCommand which does the appropriate demand. /// [TypeConverter("System.Windows.Input.CommandConverter, PresentationFramework, Version=" + Microsoft.Internal.BuildInfo.WCP_VERSION + ", Culture=neutral, PublicKeyToken=" + Microsoft.Internal.BuildInfo.WCP_PUBLIC_KEY_TOKEN + ", Custom=null")] [Localizability(LocalizationCategory.NeverLocalize)] // cannot be localized public ICommand Command { get { return _command; } [SecurityCritical] set { if (value == null) throw new ArgumentNullException("value"); lock (_dataLock) { // Check before assignment to avoid continuation // CheckSecureCommand(value, _gesture); _command = value; } } } ////// A parameter for the command. /// public object CommandParameter { get { return _commandParameter; } set { lock (_dataLock) { _commandParameter = value; } } } ////// Where the command should be raised. /// public IInputElement CommandTarget { get { return _commandTarget; } set { lock (_dataLock) { _commandTarget = value; } } } ////// InputGesture associated with the Command /// ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// PublicOk - Calls CheckSecureCommand which does the appropriate demand. /// public virtual InputGesture Gesture { // We would like to make this getter non-virtual but that's not legal // in C#. Luckily there is no security issue with leaving it virtual. get { return _gesture; } [SecurityCritical] set { if (value == null) throw new ArgumentNullException("value"); lock (_dataLock) { // Check before assignment to avoid continuation // CheckSecureCommand(_command, value); _gesture = value; } } } #endregion Public Methods //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- ////// Critical - determines if a command will later make an /// assert. This is critical to be right, because /// later we assume that the binding was protected. /// TreatAsSafe - Demand() is not an unsafe operation /// [SecurityCritical, SecurityTreatAsSafe] void CheckSecureCommand(ICommand command, InputGesture gesture) { ISecureCommand secure = command as ISecureCommand; if (secure != null) { secure.UserInitiatedPermission.Demand(); } } //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ #region Private Fields private ICommand _command = null ; private InputGesture _gesture = null ; private object _commandParameter; private IInputElement _commandTarget; internal static object _dataLock = new object(); #endregion Private Fields } } // 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.Security; // SecurityCritical, TreatAsSafe using System.Security.Permissions; using System.Windows; using System.Windows.Markup; using System.ComponentModel; namespace System.Windows.Input { ////// InputBinding - InputGesture and ICommand combination /// Used to specify the binding between Gesture and Command at Element level. /// public class InputBinding : DependencyObject, ICommandSource { #region Constructor ////// Default Constructor - needed to allow markup creation /// protected InputBinding() { } ////// Constructor /// /// Command /// Input Gesture ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// TreatAsSafe - Calls CheckSecureCommand which does the appropriate demand. /// [SecurityCritical] public InputBinding(ICommand command, InputGesture gesture) { if (command == null) throw new ArgumentNullException("command"); if (gesture == null) throw new ArgumentNullException("gesture"); // Check before assignment to avoid continuation CheckSecureCommand(command, gesture); _command = command; _gesture = gesture; } #endregion Constructor //----------------------------------------------------- // // Public Methods // //----------------------------------------------------- #region Public Methods ////// Command Object associated /// ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// PublicOk - Calls CheckSecureCommand which does the appropriate demand. /// [TypeConverter("System.Windows.Input.CommandConverter, PresentationFramework, Version=" + Microsoft.Internal.BuildInfo.WCP_VERSION + ", Culture=neutral, PublicKeyToken=" + Microsoft.Internal.BuildInfo.WCP_PUBLIC_KEY_TOKEN + ", Custom=null")] [Localizability(LocalizationCategory.NeverLocalize)] // cannot be localized public ICommand Command { get { return _command; } [SecurityCritical] set { if (value == null) throw new ArgumentNullException("value"); lock (_dataLock) { // Check before assignment to avoid continuation // CheckSecureCommand(value, _gesture); _command = value; } } } ////// A parameter for the command. /// public object CommandParameter { get { return _commandParameter; } set { lock (_dataLock) { _commandParameter = value; } } } ////// Where the command should be raised. /// public IInputElement CommandTarget { get { return _commandTarget; } set { lock (_dataLock) { _commandTarget = value; } } } ////// InputGesture associated with the Command /// ////// Critical - may associate a secure command with a gesture, in /// these cases we need to demand the appropriate permission. /// PublicOk - Calls CheckSecureCommand which does the appropriate demand. /// public virtual InputGesture Gesture { // We would like to make this getter non-virtual but that's not legal // in C#. Luckily there is no security issue with leaving it virtual. get { return _gesture; } [SecurityCritical] set { if (value == null) throw new ArgumentNullException("value"); lock (_dataLock) { // Check before assignment to avoid continuation // CheckSecureCommand(_command, value); _gesture = value; } } } #endregion Public Methods //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- ////// Critical - determines if a command will later make an /// assert. This is critical to be right, because /// later we assume that the binding was protected. /// TreatAsSafe - Demand() is not an unsafe operation /// [SecurityCritical, SecurityTreatAsSafe] void CheckSecureCommand(ICommand command, InputGesture gesture) { ISecureCommand secure = command as ISecureCommand; if (secure != null) { secure.UserInitiatedPermission.Demand(); } } //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ #region Private Fields private ICommand _command = null ; private InputGesture _gesture = null ; private object _commandParameter; private IInputElement _commandTarget; internal static object _dataLock = new object(); #endregion Private Fields } } // 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
- DataService.cs
- DefaultObjectMappingItemCollection.cs
- WindowsTokenRoleProvider.cs
- SystemWebExtensionsSectionGroup.cs
- PrefixQName.cs
- VisualStyleTypesAndProperties.cs
- XmlBinaryReaderSession.cs
- MediaSystem.cs
- DropSource.cs
- HttpWebRequest.cs
- JoinQueryOperator.cs
- GrammarBuilderWildcard.cs
- Tuple.cs
- APCustomTypeDescriptor.cs
- SystemNetHelpers.cs
- RawAppCommandInputReport.cs
- HoistedLocals.cs
- ContextInformation.cs
- MemberListBinding.cs
- EntityDataSourceContextDisposingEventArgs.cs
- ReceiveParametersContent.cs
- _ChunkParse.cs
- RenderTargetBitmap.cs
- InputLangChangeEvent.cs
- MemberCollection.cs
- CodeDirectoryCompiler.cs
- IdnMapping.cs
- TimeSpanMinutesConverter.cs
- TextEffectCollection.cs
- HashHelper.cs
- ConditionalAttribute.cs
- File.cs
- CustomTypeDescriptor.cs
- CatalogZoneBase.cs
- BooleanFacetDescriptionElement.cs
- ListView.cs
- TlsnegoTokenAuthenticator.cs
- EntityModelBuildProvider.cs
- DataGridViewRowCollection.cs
- JsonReaderDelegator.cs
- InputScope.cs
- LineServices.cs
- UIElement3DAutomationPeer.cs
- PingReply.cs
- ItemsPanelTemplate.cs
- GroupDescription.cs
- VisualCollection.cs
- LightweightCodeGenerator.cs
- Activity.cs
- Figure.cs
- InternalEnumValidator.cs
- ExpressionPrefixAttribute.cs
- RightsManagementProvider.cs
- filewebrequest.cs
- XmlDataSource.cs
- ObjectConverter.cs
- DateTimeConverter.cs
- Visual.cs
- InvalidDataContractException.cs
- DataGridViewColumnEventArgs.cs
- XPathEmptyIterator.cs
- COM2ExtendedUITypeEditor.cs
- HyperlinkAutomationPeer.cs
- SoapHeaderAttribute.cs
- TablePattern.cs
- RegisteredHiddenField.cs
- RequestBringIntoViewEventArgs.cs
- MetafileHeader.cs
- PaperSource.cs
- IdentifierService.cs
- WebPartPersonalization.cs
- XmlNamespaceManager.cs
- LinqToSqlWrapper.cs
- Expression.cs
- Roles.cs
- HtmlTextArea.cs
- HtmlControl.cs
- KeyInstance.cs
- Lock.cs
- CompilationUnit.cs
- TagPrefixInfo.cs
- GeometryModel3D.cs
- PngBitmapEncoder.cs
- OrderingExpression.cs
- TriggerAction.cs
- SchemaMapping.cs
- LicenseContext.cs
- BitmapFrameDecode.cs
- TextSelectionProcessor.cs
- SmiEventSink_DeferedProcessing.cs
- ColorDialog.cs
- DSASignatureDeformatter.cs
- ViewSimplifier.cs
- Cell.cs
- SafeCoTaskMem.cs
- InputLanguage.cs
- DataServiceExpressionVisitor.cs
- DataSourceSerializationException.cs
- AsymmetricKeyExchangeDeformatter.cs
- DataGridViewRowHeaderCell.cs