mirror of
https://github.com/VitalickS/BrightSharp.Toolkit.git
synced 2026-03-21 02:21:15 +00:00
.net copy
This commit is contained in:
60
BrightSharp.NET/Converters/IntToValueConverter.cs
Normal file
60
BrightSharp.NET/Converters/IntToValueConverter.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BrightSharp.Converters
|
||||
{
|
||||
public class IntToValueConverter : IValueConverter
|
||||
{
|
||||
public ulong? TrueValueInt { get; set; } = null;
|
||||
public ulong? FalseValueInt { get; set; } = 0;
|
||||
|
||||
|
||||
public object TrueValue { get; set; } = true;
|
||||
public object FalseValue { get; set; } = false;
|
||||
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
value = false;
|
||||
}
|
||||
if (value is string valueStr)
|
||||
{
|
||||
value = valueStr.Length > 0;
|
||||
}
|
||||
if (value is bool valueBool)
|
||||
{
|
||||
value = valueBool ? 1 : 0;
|
||||
}
|
||||
if (value is ICollection valueCol)
|
||||
{
|
||||
value = valueCol.Count;
|
||||
}
|
||||
if (value is Enum en)
|
||||
{
|
||||
value = System.Convert.ToInt32(en);
|
||||
}
|
||||
if (ulong.TryParse(value.ToString(), out ulong valueLong))
|
||||
{
|
||||
// Exact match for false
|
||||
if (FalseValueInt.HasValue && FalseValueInt == valueLong) return FalseValue;
|
||||
// Exact match for true
|
||||
if (TrueValueInt.HasValue && TrueValueInt == valueLong) return TrueValue;
|
||||
// Any value for false
|
||||
if (!FalseValueInt.HasValue) return FalseValue;
|
||||
// Any value for true
|
||||
if (!TrueValueInt.HasValue) return TrueValue;
|
||||
}
|
||||
return TrueValue;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
// Convert with potential lose exact value match
|
||||
return Equals(value, TrueValue) ? TrueValueInt : FalseValueInt;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BrightSharp.Converters
|
||||
{
|
||||
[Localizability(LocalizationCategory.NeverLocalize)]
|
||||
public class InverseBooleanToVisibilityConverter : IValueConverter
|
||||
{
|
||||
private BooleanToVisibilityConverter _converter = new BooleanToVisibilityConverter();
|
||||
|
||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
|
||||
var result = _converter.Convert(value, targetType, parameter, culture) as Visibility?;
|
||||
return result == Visibility.Collapsed ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
|
||||
var result = _converter.ConvertBack(value, targetType, parameter, culture) as bool?;
|
||||
return result == true ? false : true;
|
||||
}
|
||||
}
|
||||
}
|
||||
40
BrightSharp.NET/Converters/ThicknessConverter.cs
Normal file
40
BrightSharp.NET/Converters/ThicknessConverter.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace BrightSharp.Converters
|
||||
{
|
||||
internal class ThicknessConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
if(value is Thickness)
|
||||
{
|
||||
var offset = double.Parse(parameter.ToString(), CultureInfo.InvariantCulture.NumberFormat);
|
||||
var thick = (Thickness)value;
|
||||
|
||||
return new Thickness(Math.Max(0, thick.Left + offset),
|
||||
Math.Max(0, thick.Top + offset),
|
||||
Math.Max(0, thick.Right + offset),
|
||||
Math.Max(0, thick.Bottom + offset));
|
||||
}
|
||||
else if(value is CornerRadius)
|
||||
{
|
||||
var offset = double.Parse(parameter.ToString(), CultureInfo.InvariantCulture.NumberFormat);
|
||||
var thick = (CornerRadius)value;
|
||||
|
||||
return new CornerRadius(Math.Max(0, thick.TopLeft + offset),
|
||||
Math.Max(0, thick.TopRight + offset),
|
||||
Math.Max(0, thick.BottomRight + offset),
|
||||
Math.Max(0, thick.BottomLeft + offset));
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user