Browse Source

Added StringToVisibilityConverter
Fixed DynamicMenuColumn Enabled/Disabled status

frankvandenbos 2 months ago
parent
commit
08456e4929

+ 20 - 0
inabox.wpf/Converters/StringToVisibilityConverter.cs

@@ -0,0 +1,20 @@
+using System;
+using System.Windows;
+
+namespace InABox.WPF;
+
+public class StringToVisibilityConverter : AbstractConverter<string,Visibility>
+{
+    public bool HideIfEmpty { get; set; } = true;
+    
+    public override Visibility Convert(String value)
+    {
+        return string.IsNullOrWhiteSpace(value)
+            ? HideIfEmpty
+                ? Visibility.Collapsed
+                : Visibility.Visible
+            : HideIfEmpty
+                ? Visibility.Visible
+                : Visibility.Collapsed;
+    }
+}

+ 12 - 9
inabox.wpf/DynamicGrid/Columns/DynamicMenuColumn.cs

@@ -43,23 +43,26 @@ namespace InABox.DynamicGrid
             {
                 if (row == null)
                     return null;
-                var status = _status?.Invoke(row);
-                if (status == null)
+                var s = _status?.Invoke(row);
+                if (s == null)
                     return _enabled;
-                if (status == DynamicMenuStatus.Enabled)
+                if (s == DynamicMenuStatus.Enabled)
                     return _enabled;
-                if (status == DynamicMenuStatus.Disabled)
+                if (s == DynamicMenuStatus.Disabled)
                     return _disabled;
                 return null;
             });
                 
             Action = r =>
             {
-                _menu.Tag = r;
-                _menu.Items.Clear();
-                _build?.Invoke(this, r);
-                if (_menu.HasItems)
-                    _menu.IsOpen = true;
+                if (_status?.Invoke(r)== DynamicMenuStatus.Enabled)
+                {
+                    _menu.Tag = r;
+                    _menu.Items.Clear();
+                    _build?.Invoke(this, r);
+                    if (_menu.HasItems)
+                        _menu.IsOpen = true;
+                }
                 return false;
             };
         }