mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
68 lines
2.1 KiB
C#
68 lines
2.1 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows;
|
|
using System.Windows.Data;
|
|
|
|
namespace AIStudio.Wpf.DiagramDesigner
|
|
{
|
|
public class GridLengthConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
var length = value?.ToString();
|
|
try
|
|
{
|
|
double add = 0;
|
|
double.TryParse(parameter?.ToString(), out add);
|
|
return new GridLength(double.Parse(length) + add, GridUnitType.Pixel);
|
|
}
|
|
catch
|
|
{
|
|
return new GridLength(1, GridUnitType.Auto);
|
|
}
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
return DependencyProperty.UnsetValue;
|
|
}
|
|
}
|
|
|
|
public class GridLengthAutoConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
var length = value?.ToString();
|
|
try
|
|
{
|
|
if (Regex.IsMatch(length, @"^\d+(\.\d+)?$"))
|
|
{
|
|
return new GridLength(double.Parse(length), GridUnitType.Pixel);
|
|
}
|
|
else if (length == "*")
|
|
{
|
|
return new GridLength(1, GridUnitType.Star);
|
|
}
|
|
else if (Regex.IsMatch(length, @"^\d+(\.\d+)?\*$"))
|
|
{
|
|
return new GridLength(double.Parse(length.Substring(0, length.Length - 1)), GridUnitType.Star);
|
|
}
|
|
else
|
|
{
|
|
return new GridLength(1, GridUnitType.Auto);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return new GridLength(1, GridUnitType.Auto);
|
|
}
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
return DependencyProperty.UnsetValue;
|
|
}
|
|
}
|
|
}
|