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
- FormatVersion.cs
- LayoutInformation.cs
- ThreadNeutralSemaphore.cs
- MDIClient.cs
- PersonalizationStateInfo.cs
- ExpressionTable.cs
- PermissionRequestEvidence.cs
- IsolatedStorageFile.cs
- DeviceContexts.cs
- TextElementEnumerator.cs
- ExecutorLocksHeldException.cs
- BitmapEffectState.cs
- ListViewCommandEventArgs.cs
- CapabilitiesRule.cs
- ControlEvent.cs
- SpecularMaterial.cs
- KnownColorTable.cs
- UnionExpr.cs
- Int32.cs
- ObjectHandle.cs
- SHA512.cs
- DataRecordInfo.cs
- DbConnectionInternal.cs
- RemotingSurrogateSelector.cs
- EditingScope.cs
- OneWayChannelFactory.cs
- Symbol.cs
- AppSettingsExpressionBuilder.cs
- SqlTopReducer.cs
- ScrollPattern.cs
- httpstaticobjectscollection.cs
- ACL.cs
- AdornerHitTestResult.cs
- TerminatorSinks.cs
- TextTreeUndo.cs
- PriorityChain.cs
- CompareValidator.cs
- PackageDigitalSignature.cs
- LoginViewDesigner.cs
- XPathMessageFilterElementCollection.cs
- ByteStreamGeometryContext.cs
- SmiContext.cs
- SiteMapNodeItemEventArgs.cs
- FaultDescription.cs
- SafeRightsManagementHandle.cs
- UserPreferenceChangingEventArgs.cs
- ChameleonKey.cs
- XXXInfos.cs
- Collection.cs
- HwndAppCommandInputProvider.cs
- WebPageTraceListener.cs
- EmissiveMaterial.cs
- TableDetailsCollection.cs
- GAC.cs
- GridViewHeaderRowPresenter.cs
- ReliableSessionElement.cs
- CharAnimationBase.cs
- Codec.cs
- PropertyContainer.cs
- OutputScope.cs
- BitSet.cs
- UpdatePanelTriggerCollection.cs
- BindingListCollectionView.cs
- ToolstripProfessionalRenderer.cs
- MailWebEventProvider.cs
- ColorIndependentAnimationStorage.cs
- NavigationPropertyEmitter.cs
- WebPartRestoreVerb.cs
- MulticastDelegate.cs
- QuaternionAnimation.cs
- GridEntry.cs
- SqlReferenceCollection.cs
- FileSecurity.cs
- ParameterCollection.cs
- Compiler.cs
- ObjectDataSourceDisposingEventArgs.cs
- XmlHelper.cs
- ParameterBuilder.cs
- HttpModule.cs
- X509Certificate2Collection.cs
- WebPartMenuStyle.cs
- BlobPersonalizationState.cs
- ConnectionProviderAttribute.cs
- InteropBitmapSource.cs
- MimeImporter.cs
- ObjectConverter.cs
- RootBrowserWindowProxy.cs
- ToolStripDropDownMenu.cs
- DbInsertCommandTree.cs
- TransformValueSerializer.cs
- TextAnchor.cs
- FontConverter.cs
- SafeLibraryHandle.cs
- ImageListStreamer.cs
- DbDataReader.cs
- LinqDataSourceSelectEventArgs.cs
- AssociationTypeEmitter.cs
- RequestQueue.cs
- NativeCppClassAttribute.cs
- PolyQuadraticBezierSegmentFigureLogic.cs