diff MetroWpf/MetroWpf.Xaml/Converters/BooleanToVisibilityConverter.cs @ 18:8049f7c58c2b

Login form 75% there
author stevenh7776 stevenhollidge@hotmail.com
date Wed, 14 Mar 2012 18:06:36 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MetroWpf/MetroWpf.Xaml/Converters/BooleanToVisibilityConverter.cs	Wed Mar 14 18:06:36 2012 +0700
@@ -0,0 +1,49 @@
+// http://drwpf.com/blog/2009/03/17/tips-and-tricks-making-value-converters-more-accessible-in-markup/
+// to use in xaml:  <TextBlock Text="{Binding SomePath, Converter={src:BoolVisibilityConverter}}" />
+
+using System;
+using System.Windows;
+using System.Windows.Data;
+using System.Windows.Markup;
+using System.Globalization;
+
+namespace MetroWpf.Xaml.Converters
+{
+  public class BooleanToVisibilityConverter : MarkupExtension, IValueConverter
+  {
+    private static BooleanToVisibilityConverter booleanToVisibilityConverter = null;
+
+    public override object ProvideValue(IServiceProvider serviceProvider)
+    {
+      if (null == booleanToVisibilityConverter)
+        booleanToVisibilityConverter = new BooleanToVisibilityConverter();
+
+      return booleanToVisibilityConverter;
+    }
+
+    public bool IsReversed { get; set; }
+    public bool UseHidden { get; set; }
+
+    #region IValueConverter Members
+
+    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+    {
+      var val = System.Convert.ToBoolean(value, CultureInfo.InvariantCulture);
+      if (this.IsReversed)
+      {
+        val = !val;
+      }
+      if (val)
+      {
+        return Visibility.Visible;
+      }
+      return this.UseHidden ? Visibility.Hidden : Visibility.Collapsed;
+    }
+    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+    {
+      throw new NotImplementedException();
+    }
+    
+    #endregion
+  }
+}