public class VisibilityConverter : IValueConverter
{
object IValueConverter.Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
//test if is null
if (value == null || value is DBNull)
{
throw new NullReferenceException("Visibility value contains a null value.");
}
//string type provided
if (value.GetType() == typeof(string))
{
switch (value.ToString().ToLower())
{
case "true":
case "yes":
return Visibility.Visible;
case "no":
case "false":
return Visibility.Collapsed;
default:
throw new ArgumentException(value + " is not a valid visibility value.");
}
}
//boolean type provided
if (value.GetType() == typeof(bool))
{
if ((bool)value)
{
return Visibility.Visible;
}
return Visibility.Collapsed;
}
//numeric value provided
int intValue;
if (int.TryParse(value.ToString(), out intValue))
{
if (intValue == 0)
{
return Visibility.Collapsed;
}
return Visibility.Visible;
}
//unknown type provided
throw new ArgumentException("Unknown type supplied. Visibility value cannot be determined.");
}
object IValueConverter.ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
Friday, 10 June 2011
WPF & Silverlight Visibility Converter
The following is a common WPF/Silverlight converter that converts either a text or boolean value into a System.Windows.Visibility value.
Labels:
Silverlight,
Snippets,
WPF
Subscribe to:
Post Comments (Atom)
Can you provide the complete project to check how the values are getting passed.
ReplyDeleteThanks in advance!!
This comment has been removed by the author.
ReplyDeleteThe following is an example of a list box that's visible only when the IsVisible property of the bound data context is true.
ReplyDeleteListBox Visibility="{Binding Path=IsVisible, Converter={StaticResource VisibilityConverter}}" ItemsSource="{Binding Path=Items}"
As IsVisible is a boolean value and the Visibility property of the ListBox takes a type of System.Windows.Visibility the converter will convert the boolean value to what is expected by the Visibility property.