Skip to content

Instantly share code, notes, and snippets.

@petarvucetin
Created October 15, 2013 16:47
Show Gist options
  • Save petarvucetin/6994694 to your computer and use it in GitHub Desktop.
Save petarvucetin/6994694 to your computer and use it in GitHub Desktop.
WPF/XAML VisibilityConverter
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Data;
namespace ClearLines.iFX.WPF
{
public class VisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
VisibilityConverterMode mode = GetMode(parameter);
switch (mode)
{
case VisibilityConverterMode.VisibleIfTrue:
return (bool)value ? Visibility.Visible : Visibility.Collapsed;
case VisibilityConverterMode.VisibleIfNotTrue:
return !(bool)value ? Visibility.Visible : Visibility.Collapsed;
case VisibilityConverterMode.TrueIfVisible:
return (Visibility)value == Visibility.Visible;
case VisibilityConverterMode.TrueIfNotVisible:
return (Visibility)value != Visibility.Visible;
default:
throw new InvalidOperationException("Invalid mode.");
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
VisibilityConverterMode mode = GetMode(parameter);
switch (mode)
{
case VisibilityConverterMode.VisibleIfTrue:
return (Visibility)value == Visibility.Visible;
case VisibilityConverterMode.VisibleIfNotTrue:
return (Visibility)value != Visibility.Visible;
case VisibilityConverterMode.TrueIfVisible:
return (bool)value ? Visibility.Visible : Visibility.Collapsed;
case VisibilityConverterMode.TrueIfNotVisible:
return !(bool)value ? Visibility.Visible : Visibility.Collapsed;
default:
throw new InvalidOperationException("Invalid mode.");
}
}
private static VisibilityConverterMode GetMode(object parameter)
{
if (parameter == null)
return VisibilityConverterMode.VisibleIfTrue;
if (parameter is VisibilityConverterMode)
return (VisibilityConverterMode)parameter;
return (VisibilityConverterMode)Enum.Parse(typeof(VisibilityConverterMode), (string)parameter, false);
}
}
public enum VisibilityConverterMode
{
VisibleIfTrue,
VisibleIfNotTrue,
TrueIfVisible,
TrueIfNotVisible
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment