Created
October 15, 2013 16:47
-
-
Save petarvucetin/6994694 to your computer and use it in GitHub Desktop.
WPF/XAML VisibilityConverter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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