|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
//
//
//
// Description: KeyGestureValueSerializer - Serializes a KeyGesture
// to and from a string
//
//
using System;
using System.ComponentModel; // for TypeConverter
using System.Globalization; // for CultureInfo
using System.Windows;
using System.Windows.Input;
using System.Windows.Markup;
#pragma warning disable 1634, 1691 // suppressing PreSharp warnings
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;
#pragma warning disable 6506
return (keyGesture != null)
&& ModifierKeysConverter.IsDefinedModifierKeys(keyGesture.Modifiers)
&& KeyGestureConverter.IsDefinedKey(keyGesture.Key);
#pragma warning restore 6506
}
/// <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);
}
}
}
|