mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-14 13:16:38 +08:00
选中状态代码整理
This commit is contained in:
@@ -142,14 +142,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
if (rubberBand.Contains(itemBounds))
|
||||
{
|
||||
//item.IsSelected = true;
|
||||
vm.SelectionService.AddToSelection(item);
|
||||
//vm.SelectionService.AddToSelection(item);
|
||||
item.AddToSelection(true, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
|
||||
{
|
||||
//item.IsSelected = false;
|
||||
vm.SelectionService.RemoveFromSelection(item);
|
||||
//vm.SelectionService.RemoveFromSelection(item);
|
||||
item.RemoveFromSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ using System.Windows.Input;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public static class SelectionProps
|
||||
public static class SelectionProps
|
||||
{
|
||||
#region EnabledForSelection
|
||||
|
||||
@@ -51,20 +51,23 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
if ((Keyboard.Modifiers & (ModifierKeys.Shift)) != ModifierKeys.None)
|
||||
{
|
||||
selectable.IsSelected = !selectable.IsSelected;
|
||||
//selectable.IsSelected = !selectable.IsSelected;
|
||||
selectable.AddToSelection(!selectable.IsSelected, false);
|
||||
}
|
||||
|
||||
if ((Keyboard.Modifiers & (ModifierKeys.Control)) != ModifierKeys.None)
|
||||
{
|
||||
selectable.IsSelected = !selectable.IsSelected;
|
||||
//selectable.IsSelected = !selectable.IsSelected;
|
||||
selectable.AddToSelection(!selectable.IsSelected, false);
|
||||
}
|
||||
}
|
||||
else if (!selectable.IsSelected)
|
||||
{
|
||||
selectable.AddToSelection(true);
|
||||
|
||||
selectable.AddToSelection(true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,7 +387,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
SourceConnector = new Connector() { Content = new PartCreatedConnectorInfo(currentPoint.X, currentPoint.Y), Tag = "虚拟的连接点" };
|
||||
}
|
||||
}
|
||||
else if (_service.DrawModeViewModel.SharpDrawModeSelected || _service.DrawModeViewModel.DrawingDrawModeSelected)
|
||||
else if (_service.DrawModeViewModel.SharpDrawModeSelected ||
|
||||
(_service.DrawModeViewModel.DrawingDrawModeSelected && _service.DrawModeViewModel.DrawingDrawMode != DrawMode.Select))
|
||||
{
|
||||
// create rubberband adorner
|
||||
AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
|
||||
|
||||
@@ -484,6 +484,9 @@
|
||||
<DataTrigger Binding="{Binding IsInnerConnector}" Value="True">
|
||||
<Setter TargetName="PART_ConnectorDecorator" Property="Template" Value="{StaticResource InnerConnectorDecoratorTemplate}" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding SelectedDisable}" Value="True">
|
||||
<Setter TargetName="selectedGrid" Property="IsHitTestVisible" Value="False" />
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</Setter.Value>
|
||||
|
||||
@@ -120,14 +120,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
base.OnPreviewKeyDown(e);
|
||||
}
|
||||
|
||||
protected override void OnLostFocus(RoutedEventArgs e)
|
||||
{
|
||||
if (this.DataContext is ISelectable selectable)
|
||||
{
|
||||
selectable.IsSelected = false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class ControlAttachProperty
|
||||
|
||||
@@ -523,7 +523,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
case nameof(IsSelected):
|
||||
if (IsSelected == false)
|
||||
{
|
||||
Labels.FirstOrDefault()?.AddToSelection(false);
|
||||
Labels.FirstOrDefault()?.AddToSelection(false, true);
|
||||
}
|
||||
break;
|
||||
case nameof(RouterMode):
|
||||
|
||||
@@ -169,15 +169,20 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Offset += new VectorBase(0, newvalue - oldvalue);
|
||||
}
|
||||
|
||||
public override void AddToSelection(bool selected)
|
||||
public override void AddToSelection(bool selected, bool clearother)
|
||||
{
|
||||
foreach (var item in Connector.Labels.ToList())
|
||||
item.IsSelected = false;
|
||||
|
||||
if (selected == true)
|
||||
if (clearother)
|
||||
{
|
||||
IsSelected = true;
|
||||
foreach (var item in Connector.Labels.ToList())
|
||||
{
|
||||
if (item != this)
|
||||
{
|
||||
item.IsSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IsSelected = selected;
|
||||
}
|
||||
|
||||
protected override void ClearText()
|
||||
|
||||
@@ -1181,7 +1181,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
foreach (var item in this.SelectedItems.ToList())
|
||||
{
|
||||
item.IsSelected = false;
|
||||
item.RemoveFromSelection();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2498,7 +2498,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
item.ParentId = groupItem.Id;
|
||||
groupItem.Resize();
|
||||
ClearSelectedItems();
|
||||
SelectionService.AddToSelection(groupItem);
|
||||
groupItem.AddToSelection(true, true);
|
||||
},
|
||||
() => {
|
||||
Remove(groupItem);
|
||||
|
||||
@@ -153,23 +153,34 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
foreach (var designerItemViewModelBase in Root.SelectedItems.ToList())
|
||||
{
|
||||
designerItemViewModelBase.ClearSelected();
|
||||
designerItemViewModelBase.RemoveFromSelection();
|
||||
}
|
||||
}
|
||||
|
||||
IsSelected = select;
|
||||
}
|
||||
|
||||
public override void AddToSelection(bool selected)
|
||||
public override void AddToSelection(bool selected, bool clearother)
|
||||
{
|
||||
foreach (SelectableDesignerItemViewModelBase item in Root.SelectedItems.ToList())
|
||||
item.IsSelected = false;
|
||||
if (clearother == true)
|
||||
{
|
||||
foreach (SelectableDesignerItemViewModelBase item in Root.SelectedItems.ToList())
|
||||
{
|
||||
if (item != this)
|
||||
{
|
||||
item.RemoveFromSelection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Root.SelectedItems.Clear();
|
||||
if (selected == true)
|
||||
{
|
||||
Root.SelectionService.AddToSelection(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
Root.SelectionService.RemoveFromSelection(this);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void ExecuteEditCommand(object param)
|
||||
|
||||
@@ -72,7 +72,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
protected virtual void Init(IDiagramViewModel root, bool initNew)
|
||||
{
|
||||
{
|
||||
Root = root;
|
||||
|
||||
if (Root?.ColorViewModel != null)
|
||||
@@ -124,7 +124,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
protected virtual void InitNew()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
protected virtual void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
||||
@@ -144,7 +144,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public bool IsLoaded
|
||||
{
|
||||
get;set;
|
||||
get; set;
|
||||
}
|
||||
|
||||
public bool IsInternalChanged
|
||||
@@ -185,10 +185,18 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
}
|
||||
|
||||
public bool DisableSelected
|
||||
private bool _disableSelected;
|
||||
public bool SelectedDisable
|
||||
{
|
||||
get;set;
|
||||
}
|
||||
get
|
||||
{
|
||||
return _disableSelected;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _disableSelected, value);
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isSelected;
|
||||
[Browsable(false)]
|
||||
@@ -197,7 +205,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
get
|
||||
{
|
||||
if (DisableSelected == true)
|
||||
if (SelectedDisable == true)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -316,10 +324,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (DisableSelected == true)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _isHitTestVisible;
|
||||
}
|
||||
@@ -424,7 +428,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
[Browsable(true)]
|
||||
public string Name
|
||||
{
|
||||
get;set;
|
||||
get; set;
|
||||
}
|
||||
|
||||
private string _text;
|
||||
@@ -462,12 +466,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
}
|
||||
|
||||
public virtual void ClearSelected()
|
||||
public virtual void RemoveFromSelection()
|
||||
{
|
||||
_isSelected = false;
|
||||
IsSelected = false;
|
||||
}
|
||||
|
||||
public virtual void AddToSelection(bool selected)
|
||||
public virtual void AddToSelection(bool selected, bool clearother)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -496,7 +500,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
protected void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false || IsInternalChanged == true ) { return; }
|
||||
if (IsLoaded == false || IsInternalChanged == true) { return; }
|
||||
|
||||
RaisePropertyChanged(sender, e);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
DrawMode = drawMode;
|
||||
Points = new List<Point> { startPoint };
|
||||
Erasable = erasable;
|
||||
DisableSelected = Erasable;
|
||||
if (Erasable)
|
||||
{
|
||||
if (Root?.DrawModeViewModel != null)
|
||||
@@ -75,7 +74,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
//this.Geometry.Transform = Transform.Parse(designer.Matrix.ToString());
|
||||
this.Points = designer.Points;
|
||||
this.DrawMode = designer.DrawMode;
|
||||
this.DisableSelected = Erasable;
|
||||
this.SelectedDisable = Erasable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,8 +92,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
if (IsFinish)
|
||||
{
|
||||
UpdateLocation();
|
||||
|
||||
if (Geometry != null)
|
||||
{
|
||||
if (Geometry.Transform is TransformGroup transformGroup)
|
||||
@@ -104,14 +101,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
transformGroup.Children.Add(new TranslateTransform(0 - Geometry.Bounds.Left, 0 - Geometry.Bounds.Top));
|
||||
}
|
||||
else
|
||||
Geometry.Transform = new TranslateTransform(0 - Left, 0 - Top);
|
||||
Geometry.Transform = new TranslateTransform(0 - Geometry.Bounds.Left, 0 - Geometry.Bounds.Top);
|
||||
|
||||
if (Erasable)
|
||||
{
|
||||
var aPen = new Pen(ColorViewModel.LineColor.ToBrush(), ColorViewModel.LineWidth);
|
||||
aPen.DashStyle = new DashStyle(StrokeDashArray.Dash[(int)ColorViewModel.LineDashStyle], 1);
|
||||
Geometry = Geometry.GetWidenedPathGeometry(aPen); //可擦除,需要把Geometry转成几何图像,所以不能有填充色
|
||||
|
||||
}
|
||||
UpdateLocation();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -180,10 +179,38 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public void UpdateLocation()
|
||||
{
|
||||
ItemWidth = Geometry.Bounds.Width + ColorViewModel.LineWidth * 2;
|
||||
ItemHeight = Geometry.Bounds.Height + ColorViewModel.LineWidth * 2;
|
||||
Left = Geometry.Bounds.Left;
|
||||
Top = Geometry.Bounds.Top;
|
||||
if (Erasable)
|
||||
{
|
||||
ItemWidth = Geometry.Bounds.Width - ColorViewModel.LineWidth * 0.5;
|
||||
ItemHeight = Geometry.Bounds.Height - ColorViewModel.LineWidth * 0.5;
|
||||
Left = Points[0].X;
|
||||
Top = Points[0].Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemWidth = Geometry.Bounds.Width;
|
||||
ItemHeight = Geometry.Bounds.Height;
|
||||
Left = Points[0].X;
|
||||
Top = Points[0].Y;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RemoveFromSelection()
|
||||
{
|
||||
if (Erasable == true)
|
||||
{
|
||||
this.SelectedDisable = true;
|
||||
}
|
||||
base.RemoveFromSelection();
|
||||
}
|
||||
|
||||
public override void AddToSelection(bool selected, bool clearother)
|
||||
{
|
||||
if (selected == true && _service.DrawModeViewModel.DrawingDrawMode == DrawMode.Select)
|
||||
{
|
||||
this.SelectedDisable = false;
|
||||
}
|
||||
base.AddToSelection(selected, clearother);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
}
|
||||
|
||||
void AddToSelection(bool selected);
|
||||
void AddToSelection(bool selected, bool clearother);
|
||||
|
||||
event PropertyChangedEventHandler PropertyChanged;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
internal void RemoveFromSelection(ISelectable item)
|
||||
public void RemoveFromSelection(ISelectable item)
|
||||
{
|
||||
if (item is IGroupable)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user