This commit is contained in:
艾竹
2023-03-18 21:44:58 +08:00
parent d97938cc2b
commit 9b3c2633a7
32 changed files with 3229 additions and 77 deletions

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<UseWPF>true</UseWPF>
<Company>AIStudio.Wpf.Controls</Company>
<Company> AIStudio.Wpf.DiagramDesigner.Controls</Company>
<Authors>akwkevin</Authors>
<PackageProjectUrl>https://gitee.com/akwkevin</PackageProjectUrl>
<PackageIcon>A.png</PackageIcon>

View File

@@ -6,6 +6,8 @@ using System.Windows.Media;
using System;
using System.Collections.Generic;
using System.Linq;
using AIStudio.Wpf.DiagramDesigner.ViewModels;
using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel;
namespace AIStudio.Wpf.DiagramDesigner
{

View File

@@ -14,6 +14,8 @@ using System.Windows.Resources;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.ViewModels;
using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel;
namespace AIStudio.Wpf.DiagramDesigner
{

View File

@@ -0,0 +1,27 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace AIStudio.Wpf.DiagramDesigner
{
public class AdditionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value != null) && (parameter != null))
{
var firstValue = (double)value;
var secondValue = double.Parse(parameter?.ToString());
return firstValue + secondValue;
}
return 0d;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,67 @@
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;
}
}
}

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel;
namespace AIStudio.Wpf.DiagramDesigner
namespace AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel
{
/// <summary>
/// Simple service locator
@@ -18,14 +18,14 @@ namespace AIStudio.Wpf.DiagramDesigner
_drawModeViewModel = new DrawModeViewModel();
_quickThemeViewModel = new QuickThemeViewModel();
_drawModeViewModel.PropertyChanged += ViewModel_PropertyChanged;
_quickThemeViewModel.PropertyChanged += ViewModel_PropertyChanged;
SetOldValue<IColorViewModel>(ColorViewModel, nameof(ColorViewModel));
SetOldValue<IFontViewModel>(FontViewModel, nameof(FontViewModel));
SetOldValue<IShapeViewModel>(ShapeViewModel, nameof(ShapeViewModel));
SetOldValue<ILockObjectViewModel>(LockObjectViewModel, nameof(LockObjectViewModel));
SetOldValue(ColorViewModel, nameof(ColorViewModel));
SetOldValue(FontViewModel, nameof(FontViewModel));
SetOldValue(ShapeViewModel, nameof(ShapeViewModel));
SetOldValue(LockObjectViewModel, nameof(LockObjectViewModel));
}
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
@@ -70,7 +70,7 @@ namespace AIStudio.Wpf.DiagramDesigner
_colorViewModel.PropertyChanged += ViewModel_PropertyChanged;
}
}
}
}
private IFontViewModel _fontViewModel;
public IFontViewModel FontViewModel
@@ -117,13 +117,19 @@ namespace AIStudio.Wpf.DiagramDesigner
private IDrawModeViewModel _drawModeViewModel;
public IDrawModeViewModel DrawModeViewModel
{
get { return _drawModeViewModel; }
get
{
return _drawModeViewModel;
}
}
private IQuickThemeViewModel _quickThemeViewModel;
public IQuickThemeViewModel QuickThemeViewModel
{
get { return _quickThemeViewModel; }
get
{
return _quickThemeViewModel;
}
}
private ILockObjectViewModel _lockObjectViewModel;
@@ -161,7 +167,7 @@ namespace AIStudio.Wpf.DiagramDesigner
return _selectedItem;
}
set
{
{
if (SetProperty(ref _selectedItem, value))
{
if (_selectedItem == null)
@@ -198,12 +204,18 @@ namespace AIStudio.Wpf.DiagramDesigner
public IDiagramServiceProvider Provider
{
get { return serviceProvider; }
get
{
return serviceProvider;
}
}
public static DiagramServicesProvider Instance
{
get { return instance.Value; }
get
{
return instance.Value;
}
}
}
}

View File

@@ -6,6 +6,8 @@ using System.Text;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Models;
using AIStudio.Wpf.DiagramDesigner.ViewModels;
using AIStudio.Wpf.DiagramDesigner.ViewModels.BaseViewModel;
using Newtonsoft.Json;
namespace AIStudio.Wpf.DiagramDesigner

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace AIStudio.Wpf.DiagramDesigner
namespace AIStudio.Wpf.DiagramDesigner.ViewModels
{
/// <summary>
/// Simple service interface