|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="EmptyStringToVisibilityConverter.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Convert from string to <see cref="System.Windows.Visibility" />.
// If the string is not null or empty, Visibility.Visible will be returned.
// If the string is null or empty, Visibility.Collapsed will be returned.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Windows;
using System.Windows.Data;
namespace Catel.Windows.Data.Converters
{
/// <summary>
/// Convert from string to <see cref="System.Windows.Visibility"/>.
/// If the string is not null or empty, Visibility.Visible will be returned.
/// If the string is null or empty, Visibility.Collapsed will be returned.
/// </summary>
#if !SILVERLIGHT
[ValueConversion(typeof(string), typeof(Visibility))]
#endif
public class EmptyStringToCollapsingVisibilityConverter : VisibilityConverterBase
{
#region Constructor & destructor
/// <summary>
/// Initializes a new instance of the <see cref="EmptyStringToCollapsingVisibilityConverter"/> class.
/// </summary>
public EmptyStringToCollapsingVisibilityConverter()
: base(Visibility.Collapsed) { }
/// <summary>
/// Initializes a new instance of the <see cref="EmptyStringToCollapsingVisibilityConverter"/> class.
/// </summary>
/// <param name="notVisibleVisibility">The <see cref="Visibility"/> state when not visibible should be returned.</param>
/// <exception cref="ArgumentException">when <paramref name="notVisibleVisibility"/> is <see cref="Visibility.Visible"/>.</exception>
internal EmptyStringToCollapsingVisibilityConverter(Visibility notVisibleVisibility)
: base(notVisibleVisibility) { }
#endregion
/// <summary>
/// Determines what value this converter should return.
/// </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>
/// <c>true</c> if the specified value is visible; otherwise, <c>false</c>.
/// </returns>
public override bool IsVisible(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Get parameter
bool invert = ((parameter != null) && (parameter.GetType() == typeof(bool))) ? (bool)parameter : false;
// Get value
string stringValue = value as string;
// Return right value
if (invert)
{
return !string.IsNullOrEmpty(stringValue) ? false : true;
}
return string.IsNullOrEmpty(stringValue) ? false : true;
}
}
#if !SILVERLIGHT
/// <summary>
/// Convert from string to <see cref="System.Windows.Visibility"/>.
/// If the string is not null or empty, Visibility.Visible will be returned.
/// If the string is null or empty, Visibility.Hidden will be returned.
/// </summary>
[ValueConversion(typeof(string), typeof(Visibility))]
public class EmptyStringToHidingVisibilityConverter : EmptyStringToCollapsingVisibilityConverter
{
/// <summary>
/// Initializes a new instance of the <see cref="EmptyStringToHidingVisibilityConverter"/> class.
/// </summary>
public EmptyStringToHidingVisibilityConverter()
: base(Visibility.Hidden) { }
}
#endif
}
|
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.