using System; using System.Collections.Generic; using System.Text; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Data; using Microsoft.UI.Xaml.Markup; namespace WinWARP.Ui.Converters; [MarkupExtensionReturnType(ReturnType = typeof(IValueConverter))] public partial class BoolToVisibilityConverter : MarkupExtension, IValueConverter { public bool IsInverted { get; set; } = false; // IValueConverter implementation public object Convert(object value, Type targetType, object parameter, string language) { bool flag = false; if (value is bool boolValue) { flag = boolValue; } var parameterInverted = false; if (parameter is string paramStr && bool.TryParse(paramStr, out var result)) { parameterInverted = result; } if (IsInverted || parameterInverted) { flag = !flag; } return flag ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, string language) { if (value is Visibility visibility) { bool result = (visibility == Visibility.Visible); return IsInverted ? !result : result; } return false; } // MarkupExtension override returning self as the instance protected override object ProvideValue() { return this; } }