|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="RoutedUICommandToToolTipConverter.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Converts the inputgestures of the routedUICommand to a tooltip text, when they're available.
// This increases the discoverability of the keyboard-shortcuts for the users.
// for instance:
// with parameter: "Gereed (Ctrl + Return)"
// without parameter: "(Ctrl + Return)"
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Windows.Data;
using System.Windows.Input;
namespace Catel.Windows.Data.Converters
{
/// <summary>
/// Converts the inputgestures of the routedUICommand to a tooltip text, when they're available.
/// This increases the discoverability of the keyboard-shortcuts for the users.
/// for instance:
/// with parameter: "Gereed (Ctrl + Return)"
/// without parameter: "(Ctrl + Return)"
/// </summary>
#if !SILVERLIGHT
[ValueConversion(typeof(RoutedUICommand), typeof(string))]
#endif
public class RoutedUICommandToToolTipConverter : IValueConverter
{
/// <summary>
/// Convert the inputGestures into a string representation
/// </summary>
/// <param name="value">The routedUICommand</param>
/// <param name="targetType">The type of the binding target (string)</param>
/// <param name="parameter">Any string content that can be displayed before the shortcut</param>
/// <param name="culture">The culture to use in the converter.</param>
/// <returns>
/// The tooltip text. If there are no inputgestures, it returns an empty string
/// </returns>
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Declare variables
string toolTip = string.Empty;
// Get value
RoutedUICommand command = value as RoutedUICommand;
if (command == null) return toolTip;
// Add parameter
if (!string.IsNullOrEmpty(parameter as string)) toolTip += string.Format(" {0}", parameter);
// Get the command text as tooltip
toolTip = command.Text;
foreach (InputGesture inputGesture in command.InputGestures)
{
// Add gesture
KeyGesture keyGesture = inputGesture as KeyGesture;
if (keyGesture != null)
{
// Create gesture text
string gesture = "(";
if (keyGesture.Modifiers != ModifierKeys.None)
{
gesture += string.Format("{0} + ", keyGesture.Modifiers);
}
gesture += string.Format("{0})", keyGesture.Key);
// Add gesture text to tooltip
toolTip += string.Format(" {0}", gesture);
//toolTip += keyGesture.DisplayString;
}
}
// Return tooltip
return (toolTip.Trim().Length > 0) ? toolTip : null;
}
/// <summary>
/// Converts a value.
/// </summary>
/// <param name="value">The value that is produced by the binding target.</param>
/// <param name="targetType">The type to convert to.</param>
/// <param name="parameter">The converter parameter to use.</param>
/// <param name="culture">The culture to use in the converter.</param>
/// <returns>
/// A converted value. If the method returns null, the valid null value is used.
/// </returns>
/// <remarks>
/// This method is currently not supported.
/// </remarks>
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ConverterHelper.DoNothingBindingValue;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.