|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IsSelectedValueConverter.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Converts a selected value to either true of false
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Globalization;
using System.Windows.Data;
namespace Catel.Windows.Data.Converters
{
/// <summary>
/// Converts a selected value to either true of false.
/// </summary>
/// <remarks>
/// This converter is very usefull when a mutual exclusive selection must be made
/// Original code found at http://geekswithblogs.net/claraoscura/archive/2008/10/17/125901.aspx
/// </remarks>
#if !SILVERLIGHT
[ValueConversion(typeof(int?), typeof(bool))]
#endif
public class IsSelectedValueConverter : IValueConverter
{
/// <summary>
/// Converts a value.
/// </summary>
/// <param name="value">The value produced by the binding source.</param>
/// <param name="targetType">The type of the binding target property.</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>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Get the parameter
int param;
if (parameter is int)
{
param = (int)parameter;
}
else if (parameter is string)
{
param = int.Parse((string)parameter);
}
else
{
return false;
}
// Return value
return (value == null) ? false : (int)value == param;
}
/// <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>
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// Check value
if (!(value is bool))
{
return ConverterHelper.DoNothingBindingValue;
}
// Get the parameter
int param;
if (parameter is int)
{
param = (int)parameter;
}
else if (parameter is string)
{
param = int.Parse((string)parameter);
}
else
{
return ConverterHelper.DoNothingBindingValue;
}
// Check result
if ((bool)value)
{
return param;
}
// Do nothing, we can't get the value if it's not equal
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.