mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-30 21:23:24 +08:00
bug优化
This commit is contained in:
@@ -594,6 +594,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
if (_viewModel.IsReadOnly) return;
|
if (_viewModel.IsReadOnly) return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
|
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
|
||||||
{
|
{
|
||||||
var element = (e.OriginalSource as FrameworkElement);
|
var element = (e.OriginalSource as FrameworkElement);
|
||||||
@@ -652,6 +654,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Focus();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,13 +5,15 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Markup;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
public class ConectorOrientationConverter : IValueConverter
|
public class ConectorOrientationConverter : MarkupExtension, IValueConverter
|
||||||
{
|
{
|
||||||
|
public double Parameter { get; set; } = 5;
|
||||||
|
|
||||||
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||||
{
|
{
|
||||||
@@ -19,7 +21,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
string str = value as string;
|
string str = value as string;
|
||||||
|
|
||||||
return -5 - (str.Length * 4);
|
var length = 0 - Parameter - (str.Length * 4);
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
else if (value is double)
|
||||||
|
{
|
||||||
|
return -Parameter - (double)value;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -28,5 +35,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override object ProvideValue(System.IServiceProvider serviceProvider)
|
||||||
|
{
|
||||||
|
return new ConectorOrientationConverter
|
||||||
|
{
|
||||||
|
Parameter = this.Parameter,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Enums
|
|||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
ConnErr,
|
ConnErr,
|
||||||
ValueErr
|
ValueErr,
|
||||||
|
ExecuteErr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
ConnectorValueType = viewmodel.ConnectorValueType;
|
ConnectorValueType = viewmodel.ConnectorValueType;
|
||||||
ConnectorValue = viewmodel.ConnectorValue;
|
ConnectorValue = viewmodel.ConnectorValue;
|
||||||
ConnectorString = viewmodel.ConnectorString;
|
ConnectorString = viewmodel.ConnectorString;
|
||||||
|
ConnectorRemark = viewmodel.ConnectorRemark;
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
@@ -42,6 +43,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[XmlAttribute]
|
||||||
|
public string ConnectorRemark
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
<Ellipse x:Name="innter" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
<Ellipse x:Name="innter" Fill="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}" StrokeThickness="1" Stroke="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Control x:Name="label">
|
<Control x:Name="value">
|
||||||
<Control.Template>
|
<Control.Template>
|
||||||
<ControlTemplate>
|
<ControlTemplate>
|
||||||
<TextBlock x:Name="txtleft" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
<TextBlock x:Name="txtleft" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
||||||
@@ -101,6 +101,23 @@
|
|||||||
</Control.Template>
|
</Control.Template>
|
||||||
</Control>
|
</Control>
|
||||||
|
|
||||||
|
<Control x:Name="label">
|
||||||
|
<Control.Template>
|
||||||
|
<ControlTemplate>
|
||||||
|
<TextBlock x:Name="txtRight" FontSize="10" Text="{Binding Name}" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
||||||
|
<TextBlock.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<ScaleTransform/>
|
||||||
|
<SkewTransform/>
|
||||||
|
<RotateTransform/>
|
||||||
|
<TranslateTransform Y="-2" X="10"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</TextBlock.RenderTransform>
|
||||||
|
</TextBlock>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Control.Template>
|
||||||
|
</Control>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<DataTemplate.Triggers>
|
<DataTemplate.Triggers>
|
||||||
<Trigger Property="IsMouseOver" Value="True">
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
@@ -109,8 +126,20 @@
|
|||||||
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
||||||
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
|
<DataTrigger Binding="{Binding BeAttachTo}" Value="True">
|
||||||
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
||||||
|
<Setter TargetName="outer" Property="Fill" Value="#f73438" />
|
||||||
|
<Setter TargetName="innter" Property="Fill" Value="#f73438" />
|
||||||
|
<Setter TargetName="innter" Property="Stroke" Value="#f73438" />
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding DisableAttachTo}" Value="True">
|
||||||
|
<Setter TargetName="outer" Property="Margin" Value="-6" />
|
||||||
|
<Setter TargetName="outer" Property="Fill" Value="Gray" />
|
||||||
|
<Setter TargetName="innter" Property="Fill" Value="Gray" />
|
||||||
|
<Setter TargetName="innter" Property="Stroke" Value="Gray" />
|
||||||
|
</DataTrigger>
|
||||||
<DataTrigger Value="Right" Binding="{Binding Orientation}">
|
<DataTrigger Value="Right" Binding="{Binding Orientation}">
|
||||||
<Setter TargetName="label" Property="Template">
|
<Setter TargetName="value" Property="Template">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<ControlTemplate>
|
<ControlTemplate>
|
||||||
<TextBlock x:Name="txtRight" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
<TextBlock x:Name="txtRight" FontSize="10" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
||||||
@@ -138,6 +167,22 @@
|
|||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter.Value>
|
</Setter.Value>
|
||||||
</Setter>
|
</Setter>
|
||||||
|
<Setter TargetName="label" Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate>
|
||||||
|
<TextBlock x:Name="txtleft" FontSize="10" Text="{Binding Name}" RenderTransformOrigin="0.5,0.5" TextTrimming="CharacterEllipsis">
|
||||||
|
<TextBlock.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<ScaleTransform/>
|
||||||
|
<SkewTransform/>
|
||||||
|
<RotateTransform/>
|
||||||
|
<TranslateTransform Y="-2" X="{Binding ElementName=txtleft,Path=Text,Converter={dd:ConectorOrientationConverter Parameter='10'}}"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</TextBlock.RenderTransform>
|
||||||
|
</TextBlock>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</DataTemplate.Triggers>
|
</DataTemplate.Triggers>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|||||||
@@ -390,6 +390,12 @@
|
|||||||
Value="{Binding MinItemHeight}" />
|
Value="{Binding MinItemHeight}" />
|
||||||
<Setter Property="SnapsToDevicePixels"
|
<Setter Property="SnapsToDevicePixels"
|
||||||
Value="True" />
|
Value="True" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.Active"
|
||||||
|
Value="true" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.BoundActualWidth"
|
||||||
|
Value="{Binding ActualItemWidth,Mode=OneWayToSource}" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.BoundActualHeight"
|
||||||
|
Value="{Binding ActualItemHeight,Mode=OneWayToSource}" />
|
||||||
<Setter Property="ContentTemplate">
|
<Setter Property="ContentTemplate">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
@@ -414,7 +420,7 @@
|
|||||||
<c:DragThumb x:Name="PART_DragThumb" EditClickCount="{Binding EditClickCount}" Cursor="SizeAll" />
|
<c:DragThumb x:Name="PART_DragThumb" EditClickCount="{Binding EditClickCount}" Cursor="SizeAll" />
|
||||||
|
|
||||||
<Grid RenderTransformOrigin="0.5,0.5">
|
<Grid RenderTransformOrigin="0.5,0.5">
|
||||||
|
|
||||||
<!-- PART_ResizeDecorator -->
|
<!-- PART_ResizeDecorator -->
|
||||||
<Control x:Name="PART_ResizeDecorator"
|
<Control x:Name="PART_ResizeDecorator"
|
||||||
Visibility="Collapsed"
|
Visibility="Collapsed"
|
||||||
@@ -730,6 +736,12 @@
|
|||||||
Value="{Binding ItemHeight}" />
|
Value="{Binding ItemHeight}" />
|
||||||
<Setter Property="SnapsToDevicePixels"
|
<Setter Property="SnapsToDevicePixels"
|
||||||
Value="True" />
|
Value="True" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.Active"
|
||||||
|
Value="true" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.BoundActualWidth"
|
||||||
|
Value="{Binding ActualItemWidth,Mode=OneWayToSource}" />
|
||||||
|
<Setter Property="dd:WidthAndHeightProps.BoundActualHeight"
|
||||||
|
Value="{Binding ActualItemHeight,Mode=OneWayToSource}" />
|
||||||
<Setter Property="ContentTemplate">
|
<Setter Property="ContentTemplate">
|
||||||
<Setter.Value>
|
<Setter.Value>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
@@ -750,6 +762,12 @@
|
|||||||
</ContextMenu>
|
</ContextMenu>
|
||||||
</Grid.ContextMenu>
|
</Grid.ContextMenu>
|
||||||
|
|
||||||
|
<Border BorderThickness="{Binding BorderThickness}"
|
||||||
|
BorderBrush="{Binding ColorViewModel.LineColor,Converter={StaticResource ColorBrushConverter}}"
|
||||||
|
Background="{Binding ColorViewModel.FillColor,Converter={StaticResource ColorBrushConverter}}"
|
||||||
|
CornerRadius="{Binding CornerRadius}">
|
||||||
|
</Border>
|
||||||
|
|
||||||
<!--PART_ConnectorDecorator-->
|
<!--PART_ConnectorDecorator-->
|
||||||
<dd:ConnectorContainer x:Name="PART_ConnectorContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Connectors}" Margin="0,0,0,0">
|
<dd:ConnectorContainer x:Name="PART_ConnectorContainer" Style="{StaticResource ItemsControlStyle}" ItemsSource="{Binding Connectors}" Margin="0,0,0,0">
|
||||||
<dd:ConnectorContainer.ItemTemplate>
|
<dd:ConnectorContainer.ItemTemplate>
|
||||||
@@ -776,11 +794,17 @@
|
|||||||
<DataTemplate.Triggers>
|
<DataTemplate.Triggers>
|
||||||
<MultiDataTrigger>
|
<MultiDataTrigger>
|
||||||
<MultiDataTrigger.Conditions>
|
<MultiDataTrigger.Conditions>
|
||||||
<Condition Value="True" Binding="{Binding IsSelected}"/>
|
<Condition Binding="{Binding IsSelected}" Value="True" />
|
||||||
<Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding ParentId}"/>
|
<Condition Binding="{Binding AlwayForResized}" Value="True" />
|
||||||
</MultiDataTrigger.Conditions>
|
</MultiDataTrigger.Conditions>
|
||||||
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
|
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
|
||||||
</MultiDataTrigger>
|
</MultiDataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding ShowResize}" Value="false">
|
||||||
|
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Collapsed"/>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding SelectedDisable}" Value="True">
|
||||||
|
<Setter TargetName="selectedGrid" Property="IsHitTestVisible" Value="False" />
|
||||||
|
</DataTrigger>
|
||||||
</DataTemplate.Triggers>
|
</DataTemplate.Triggers>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</Setter.Value>
|
</Setter.Value>
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
var vm = connector.DataContext as FullyCreatedConnectorInfo;
|
var vm = connector.DataContext as FullyCreatedConnectorInfo;
|
||||||
if (vm != null)
|
if (vm != null)
|
||||||
{
|
{
|
||||||
Canvas.SetLeft(connector, vm.DataItem.ItemWidth * vm.XRatio - vm.ConnectorWidth / 2);
|
Canvas.SetLeft(connector, vm.DataItem.GetItemWidth() * vm.XRatio - vm.ConnectorWidth / 2);
|
||||||
Canvas.SetTop(connector, vm.DataItem.ItemHeight * vm.YRatio - vm.ConnectorHeight / 2);
|
Canvas.SetTop(connector, vm.DataItem.GetItemHeight() * vm.YRatio - vm.ConnectorHeight / 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -561,6 +561,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
case nameof(DesignerItemViewModelBase.ItemWidth):
|
case nameof(DesignerItemViewModelBase.ItemWidth):
|
||||||
case nameof(DesignerItemViewModelBase.Left):
|
case nameof(DesignerItemViewModelBase.Left):
|
||||||
case nameof(DesignerItemViewModelBase.Top):
|
case nameof(DesignerItemViewModelBase.Top):
|
||||||
|
case nameof(DesignerItemViewModelBase.ActualItemHeight):
|
||||||
|
case nameof(DesignerItemViewModelBase.ActualItemWidth):
|
||||||
if (IsFullConnection)
|
if (IsFullConnection)
|
||||||
{
|
{
|
||||||
//减少触发一次画线
|
//减少触发一次画线
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
ConnectorValue = designer.ConnectorValue;
|
ConnectorValue = designer.ConnectorValue;
|
||||||
ConnectorValueType = designer.ConnectorValueType;
|
ConnectorValueType = designer.ConnectorValueType;
|
||||||
ConnectorString = designer.ConnectorString;
|
ConnectorString = designer.ConnectorString;
|
||||||
|
ConnectorRemark = designer.ConnectorRemark;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,6 +72,19 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string _connectorRemark;
|
||||||
|
public string ConnectorRemark
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _connectorRemark;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _connectorRemark, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private ConnectorValueType _connectorValueType;
|
private ConnectorValueType _connectorValueType;
|
||||||
public ConnectorValueType ConnectorValueType
|
public ConnectorValueType ConnectorValueType
|
||||||
{
|
{
|
||||||
@@ -154,7 +168,23 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (logical.ConnectorValueType <= ConnectorValueType.ValueType && this.ConnectorValueType <= ConnectorValueType.ValueType)
|
else if (logical.ConnectorValueType == ConnectorValueType.Int && this.ConnectorValueType == ConnectorValueType.Int)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (logical.ConnectorValueType == ConnectorValueType.Real && this.ConnectorValueType == ConnectorValueType.Real)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (logical.ConnectorValueType == ConnectorValueType.Bool && this.ConnectorValueType == ConnectorValueType.Bool)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (logical.ConnectorValueType == ConnectorValueType.ValueType && this.ConnectorValueType <= ConnectorValueType.ValueType)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (logical.ConnectorValueType <= ConnectorValueType.ValueType && this.ConnectorValueType == ConnectorValueType.ValueType)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1259,9 +1259,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
item.Id = Guid.NewGuid();
|
item.Id = Guid.NewGuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item is LogicalGateItemViewModelBase logical)
|
if (item is LogicalGateItemViewModelBase logical && logical.OrderNumber == 0)
|
||||||
{
|
{
|
||||||
logical.OrderNumber = Items.OfType<LogicalGateItemViewModelBase>().Count() + 1;
|
logical.OrderNumber = Items.OfType<LogicalGateItemViewModelBase>().Where(p => p.OrderNumber > 0).Count() + 1;
|
||||||
}
|
}
|
||||||
//if (item is BlockDesignerItemViewModel block)
|
//if (item is BlockDesignerItemViewModel block)
|
||||||
//{
|
//{
|
||||||
|
|||||||
@@ -458,9 +458,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Browsable(true)]
|
[Browsable(true)]
|
||||||
|
private string _name;
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
get; set;
|
get
|
||||||
|
{
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _name, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string _text;
|
private string _text;
|
||||||
|
|||||||
@@ -360,6 +360,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (output.ErrorCode == ConnectorErrorCode.ExecuteErr)
|
||||||
|
{
|
||||||
|
input.ErrorCode = ConnectorErrorCode.ExecuteErr;
|
||||||
|
input.ErrorMessage = "无效的输入";
|
||||||
|
input.ColorViewModel.FillColor.Color = Colors.DarkRed;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user