| File: System\Windows\Input\Command\KeyGestureValueSerializer.cs | Web Access |
| Project: src\wpf\src\Microsoft.DotNet.Wpf\src\PresentationCore\PresentationCore.csproj (PresentationCore) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // // // // Description: KeyGestureValueSerializer - Serializes a KeyGesture // to and from a string // // using System.ComponentModel; // for TypeConverter using System.Windows.Markup; namespace System.Windows.Input { /// <summary> /// KeyGestureValueSerializer - Converter class for serializing a KeyGesture /// </summary> public class KeyGestureValueSerializer : ValueSerializer { /// <summary> /// CanConvertFromString() /// </summary> /// <param name="value"></param> /// <param name="context"></param> /// <returns></returns> /// <ExternalAPI/> public override bool CanConvertFromString(string value, IValueSerializerContext context) { return true; } /// <summary> /// CanConvertToString() /// </summary> /// <param name="value"></param> /// <param name="context"></param> /// <returns></returns> /// <ExternalAPI/> public override bool CanConvertToString(object value, IValueSerializerContext context) { KeyGesture keyGesture = value as KeyGesture; return (keyGesture != null) && ModifierKeysConverter.IsDefinedModifierKeys(keyGesture.Modifiers) && KeyGestureConverter.IsDefinedKey(keyGesture.Key); } /// <summary> /// ConvertFromString() /// </summary> /// <param name="value"></param> /// <param name="context"></param> /// <returns></returns> public override object ConvertFromString(string value, IValueSerializerContext context) { TypeConverter converter = TypeDescriptor.GetConverter(typeof(KeyGesture)); if (converter != null) return converter.ConvertFromString(value); else return base.ConvertFromString(value, context); } /// <summary> /// ConvertToString() /// </summary> /// <param name="value"></param> /// <param name="context"></param> /// <returns></returns> public override string ConvertToString(object value, IValueSerializerContext context) { TypeConverter converter = TypeDescriptor.GetConverter(typeof(KeyGesture)); if (converter != null) return converter.ConvertToInvariantString(value); else return base.ConvertToString(value, context); } } }