|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="CountVisibilityConverter.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Convert for auto hide or collapsing of control depending on given count.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Windows;
using System.Windows.Data;
namespace Catel.Windows.Data.Converters
{
/// <summary>
/// Convert for auto collapsing of control depending on given count.
/// </summary>
#if !SILVERLIGHT
[ValueConversion(typeof(int), typeof(Visibility))]
#endif
public class CountCollapsedConverter : VisibilityConverterBase
{
#region Constructor & destructor
/// <summary>
/// Initializes a new instance of the <see cref="CountCollapsedConverter"/> class.
/// </summary>
public CountCollapsedConverter()
: base(Visibility.Collapsed) { }
/// <summary>
/// Initializes a new instance of the <see cref="CountCollapsedConverter"/> 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 CountCollapsedConverter(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)
{
if (value == null)
{
return false;
}
bool hasContent = false;
if (!hasContent && value is ICollection)
{
hasContent = ((ICollection)value).Count > 0;
}
if (!hasContent && value is string)
{
hasContent = ((string)value).Length > 0;
}
if (!hasContent && value is long)
{
hasContent = ((long)value) > 0;
}
if (!hasContent && value is int)
{
hasContent = ((int)value) > 0;
}
if (!hasContent && value is short)
{
hasContent = ((short)value) > 0;
}
return hasContent;
}
}
#if !SILVERLIGHT
/// <summary>
/// Convert for auto hiding of control depending on given count.
/// </summary>
[ValueConversion(typeof(int), typeof(Visibility))]
public class CountHiddenConverter : CountCollapsedConverter
{
/// <summary>
/// Initializes a new instance of the <see cref="CountHiddenConverter"/> class.
/// </summary>
public CountHiddenConverter()
: 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.