Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Input / Command / KeyBinding.cs / 1 / KeyBinding.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: The KeyBinding class is used by the developer to create Keyboard Input Bindings // // See spec at : http://avalon/coreui/Specs/Commanding(new).mht // //* KeyBinding class serves the purpose of Input Bindings for Keyboard Device. // // History: // 06/01/2003 : chandras - Created // 05/01/2004 : chandra - changed to accommodate new design // ( http://avalon/coreui/Specs/Commanding(new).mht ) //--------------------------------------------------------------------------- using System; using System.Windows.Input; using System.Windows; using System.ComponentModel; using System.Windows.Markup; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// KeyBinding - Implements InputBinding (generic InputGesture-Command map) /// KeyBinding acts like a map for KeyGesture and Commands. /// Most of the logic is in InputBinding and KeyGesture, this only /// facilitates user to add Key/Modifiers directly without going in /// KeyGesture path. Also it provides the KeyGestureTypeConverter /// on the Gesture property to have KeyGesture, like Ctrl+X, Alt+V /// defined in Markup as Gesture="Ctrl+X" working /// public class KeyBinding : InputBinding { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructor ////// Constructor /// public KeyBinding() : base() { } ////// Constructor /// /// Command associated /// KeyGesture associated public KeyBinding(ICommand command, KeyGesture gesture) : base(command, gesture) { } ////// Constructor /// /// /// modifiers /// key public KeyBinding(ICommand command, Key key, ModifierKeys modifiers) : base(command, new KeyGesture(key, modifiers)) { } #endregion Constructor //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods ////// KeyGesture Override, to ensure type-safety and provide a /// TypeConverter for KeyGesture /// [TypeConverter(typeof(KeyGestureConverter))] [ValueSerializer(typeof(KeyGestureValueSerializer))] public override InputGesture Gesture { get { return base.Gesture as KeyGesture; } set { if (value is KeyGesture) { base.Gesture = value; } else { throw new ArgumentException(SR.Get(SRID.InputBinding_ExpectedInputGesture, typeof(KeyGesture))); } } } ////// Modifier /// public ModifierKeys Modifiers { get { lock (_dataLock) { if (null != Gesture) { return ((KeyGesture)Gesture).Modifiers; } return ModifierKeys.None; } } set { lock (_dataLock) { if (null == Gesture) { Gesture = new KeyGesture(Key.None, (ModifierKeys)value, /*validateGesture = */ false); } else { Gesture = new KeyGesture(((KeyGesture)Gesture).Key, value, /*validateGesture = */ false); } } } } ////// Key /// public Key Key { get { lock (_dataLock) { if (null != Gesture) { return ((KeyGesture)Gesture).Key; } return Key.None; } } set { lock (_dataLock) { if (null == Gesture) { Gesture = new KeyGesture((Key)value, ModifierKeys.None, /*validateGesture = */ false); } else { Gesture = new KeyGesture(value, ((KeyGesture)Gesture).Modifiers, /*validateGesture = */ false); } } } } #endregion Public Methods //------------------------------------------------------ // // 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. // // // // Description: The KeyBinding class is used by the developer to create Keyboard Input Bindings // // See spec at : http://avalon/coreui/Specs/Commanding(new).mht // //* KeyBinding class serves the purpose of Input Bindings for Keyboard Device. // // History: // 06/01/2003 : chandras - Created // 05/01/2004 : chandra - changed to accommodate new design // ( http://avalon/coreui/Specs/Commanding(new).mht ) //--------------------------------------------------------------------------- using System; using System.Windows.Input; using System.Windows; using System.ComponentModel; using System.Windows.Markup; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// KeyBinding - Implements InputBinding (generic InputGesture-Command map) /// KeyBinding acts like a map for KeyGesture and Commands. /// Most of the logic is in InputBinding and KeyGesture, this only /// facilitates user to add Key/Modifiers directly without going in /// KeyGesture path. Also it provides the KeyGestureTypeConverter /// on the Gesture property to have KeyGesture, like Ctrl+X, Alt+V /// defined in Markup as Gesture="Ctrl+X" working /// public class KeyBinding : InputBinding { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructor ////// Constructor /// public KeyBinding() : base() { } ////// Constructor /// /// Command associated /// KeyGesture associated public KeyBinding(ICommand command, KeyGesture gesture) : base(command, gesture) { } ////// Constructor /// /// /// modifiers /// key public KeyBinding(ICommand command, Key key, ModifierKeys modifiers) : base(command, new KeyGesture(key, modifiers)) { } #endregion Constructor //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- #region Public Methods ////// KeyGesture Override, to ensure type-safety and provide a /// TypeConverter for KeyGesture /// [TypeConverter(typeof(KeyGestureConverter))] [ValueSerializer(typeof(KeyGestureValueSerializer))] public override InputGesture Gesture { get { return base.Gesture as KeyGesture; } set { if (value is KeyGesture) { base.Gesture = value; } else { throw new ArgumentException(SR.Get(SRID.InputBinding_ExpectedInputGesture, typeof(KeyGesture))); } } } ////// Modifier /// public ModifierKeys Modifiers { get { lock (_dataLock) { if (null != Gesture) { return ((KeyGesture)Gesture).Modifiers; } return ModifierKeys.None; } } set { lock (_dataLock) { if (null == Gesture) { Gesture = new KeyGesture(Key.None, (ModifierKeys)value, /*validateGesture = */ false); } else { Gesture = new KeyGesture(((KeyGesture)Gesture).Key, value, /*validateGesture = */ false); } } } } ////// Key /// public Key Key { get { lock (_dataLock) { if (null != Gesture) { return ((KeyGesture)Gesture).Key; } return Key.None; } } set { lock (_dataLock) { if (null == Gesture) { Gesture = new KeyGesture((Key)value, ModifierKeys.None, /*validateGesture = */ false); } else { Gesture = new KeyGesture(value, ((KeyGesture)Gesture).Modifiers, /*validateGesture = */ false); } } } } #endregion Public Methods //------------------------------------------------------ // // 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
- HandlerWithFactory.cs
- BaseComponentEditor.cs
- XPathBinder.cs
- PostBackOptions.cs
- SvcMapFile.cs
- DbProviderConfigurationHandler.cs
- IncomingWebRequestContext.cs
- Missing.cs
- CodeConditionStatement.cs
- TextFormatterContext.cs
- StateWorkerRequest.cs
- AspNetSynchronizationContext.cs
- WebPartEditorOkVerb.cs
- AsymmetricSignatureDeformatter.cs
- WebPartTracker.cs
- RedBlackList.cs
- Style.cs
- GuidelineCollection.cs
- AssemblyResourceLoader.cs
- ConfigXmlWhitespace.cs
- OSEnvironmentHelper.cs
- ToolStripItemBehavior.cs
- SecurityException.cs
- WindowsHyperlink.cs
- ExpressionLexer.cs
- ScriptResourceHandler.cs
- XmlSiteMapProvider.cs
- CustomError.cs
- EntityDataSourceDesignerHelper.cs
- BoundingRectTracker.cs
- IODescriptionAttribute.cs
- NativeWindow.cs
- hebrewshape.cs
- SiteMapDataSourceView.cs
- ConnectionStringSettingsCollection.cs
- ArrowControl.xaml.cs
- ErrorRuntimeConfig.cs
- PolyLineSegment.cs
- RtType.cs
- DotAtomReader.cs
- ScriptManager.cs
- UnlockCardRequest.cs
- DependencyPropertyKind.cs
- BrowserCapabilitiesCodeGenerator.cs
- PackagePartCollection.cs
- Size3DConverter.cs
- DATA_BLOB.cs
- ProfilePropertySettings.cs
- shaperfactoryquerycacheentry.cs
- DeriveBytes.cs
- DataGridViewCell.cs
- TrackingCondition.cs
- PagerStyle.cs
- DependencyObjectPropertyDescriptor.cs
- HttpsTransportElement.cs
- MenuStrip.cs
- AssociationType.cs
- CodeArrayCreateExpression.cs
- BuildProvidersCompiler.cs
- ProcessProtocolHandler.cs
- CaseInsensitiveHashCodeProvider.cs
- TreePrinter.cs
- SizeConverter.cs
- Inline.cs
- LongTypeConverter.cs
- QueryAccessibilityHelpEvent.cs
- XMLSyntaxException.cs
- ArrangedElement.cs
- BuildDependencySet.cs
- SqlReferenceCollection.cs
- VirtualDirectoryMappingCollection.cs
- ImageSourceConverter.cs
- ToolboxCategoryItems.cs
- AutoGeneratedFieldProperties.cs
- MouseGestureValueSerializer.cs
- DiagnosticSection.cs
- KeyEventArgs.cs
- BackStopAuthenticationModule.cs
- CustomErrorsSection.cs
- Span.cs
- ListViewCommandEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- ButtonField.cs
- TimeZone.cs
- RuntimeConfigurationRecord.cs
- TextFormatterHost.cs
- CopyOnWriteList.cs
- XmlElementList.cs
- TemplateLookupAction.cs
- AbsoluteQuery.cs
- DBDataPermissionAttribute.cs
- NegotiateStream.cs
- TableLayoutSettingsTypeConverter.cs
- NotifyParentPropertyAttribute.cs
- FamilyMapCollection.cs
- SQLStringStorage.cs
- SqlClientPermission.cs
- TimerElapsedEvenArgs.cs
- SafeFileMappingHandle.cs
- ConnectionInterfaceCollection.cs