Skip to content

Commit 9786a21

Browse files
committed
fix for Z-index
1 parent 6d01c86 commit 9786a21

11 files changed

Lines changed: 74 additions & 30 deletions

SimpleStateMachineNodeEditor/Helpers/MyPoint.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public MyPoint Set(MyPoint point)
139139
/// <returns>Точка Point</returns>
140140
public Point ToPoint()
141141
{
142-
return MyPoint.MyPointToPoint(this);
142+
return MyPoint.ToPoint(this);
143143
}
144144

145145
/// <summary>
@@ -174,7 +174,7 @@ public override string ToString()
174174
/// </summary>
175175
/// <param name="point">Точка MyPoint</param>
176176
/// <returns>Точка Point</returns>
177-
public static Point MyPointToPoint(MyPoint point)
177+
public static Point ToPoint(MyPoint point)
178178
{
179179
return (point != null) ? new Point(point.X, point.Y) : new Point();
180180
}
@@ -184,7 +184,7 @@ public static Point MyPointToPoint(MyPoint point)
184184
/// </summary>
185185
/// <param name="point">ТОчка Point</param>
186186
/// <returns>Точка MyPoint</returns>
187-
public static MyPoint MyPointFromPoint(Point point)
187+
public static MyPoint CreateFromPoint(Point point)
188188
{
189189
return (point != null) ? new MyPoint(point.X, point.Y) : new MyPoint();
190190
}

SimpleStateMachineNodeEditor/View/MainWindow.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ private void SetupEvents()
6464
{
6565
this.WhenActivated(disposable =>
6666
{
67+
6768
this.Header.Events().PreviewMouseLeftButtonDown.Subscribe(e => HeaderClick(e)).DisposeWith(disposable);
6869
this.ButtonClose.Events().Click.Subscribe(e => ButtonCloseClick(e)).DisposeWith(disposable);
6970
this.ButtonMin.Events().Click.Subscribe(e => ButtonMinClick(e)).DisposeWith(disposable);

SimpleStateMachineNodeEditor/View/ViewConnect.xaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,6 @@
66
xmlns:local="clr-namespace:SimpleStateMachineNodeEditor.View"
77
mc:Ignorable="d"
88
d:DesignHeight="450" d:DesignWidth="800" IsHitTestVisible="False">
9-
<UserControl.RenderTransform>
10-
<TransformGroup>
11-
<ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1"/>
12-
<SkewTransform/>
13-
<RotateTransform/>
14-
<TranslateTransform/>
15-
</TransformGroup>
16-
</UserControl.RenderTransform>
179
<Grid>
1810
<Path x:Name="Path" StrokeDashCap="Round" StrokeLineJoin="Round" Stroke="{StaticResource ColorConnector}">
1911
<Path.Data>

SimpleStateMachineNodeEditor/View/ViewConnect.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ private void SetupBinding()
4949
{
5050
this.WhenActivated(disposable =>
5151
{
52+
Canvas.SetZIndex((UIElement)this.VisualParent, this.ViewModel.FromConnector.NodesCanvas.Nodes.Count);
5253
// Цвет линии
5354
this.OneWayBind(this.ViewModel, x => x.Stroke, x => x.Path.Stroke).DisposeWith(disposable);
5455

SimpleStateMachineNodeEditor/View/ViewLeftConnector.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ void UpdatePosition()
108108
if (NodesCanvas == null)
109109
return;
110110
//Получаем позицию центру на канвасе
111-
Point Position = this.TransformToAncestor(NodesCanvas).Transform(InputCenter);
111+
MyPoint Position = MyPoint.CreateFromPoint(this.TransformToAncestor(NodesCanvas).Transform(InputCenter));
112112

113-
this.ViewModel.PositionConnectPoint.Set(Position);
113+
this.ViewModel.PositionConnectPoint.Set(Position/this.ViewModel.NodesCanvas.Scale.Value);
114114
}
115115
}
116116
}

SimpleStateMachineNodeEditor/View/ViewNode.xaml.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,15 @@ public ViewNode()
4747
SetupBinding();
4848
SetupEvents();
4949
SetupCommands();
50+
5051
}
5152
#region Setup Binding
5253
private void SetupBinding()
5354
{
5455
this.WhenActivated(disposable =>
5556
{
57+
Canvas.SetZIndex((UIElement)this.VisualParent,this.ViewModel.NodesCanvas.Nodes.Count);
58+
5659
//BorderBrush (Рамка вокруг узла)
5760
this.OneWayBind(this.ViewModel, x => x.BorderBrush, x => x.Border.BorderBrush).DisposeWith(disposable);
5861

SimpleStateMachineNodeEditor/View/ViewNodesCanvas.xaml

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,49 @@
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:local="clr-namespace:SimpleStateMachineNodeEditor.View"
7+
xmlns:View="clr-namespace:SimpleStateMachineNodeEditor.View"
8+
xmlns:ViewModel="clr-namespace:SimpleStateMachineNodeEditor.ViewModel"
79
mc:Ignorable="d"
810
d:DesignHeight="450" d:DesignWidth="800" Focusable="True" AllowDrop="True" ClipToBounds="True">
11+
912
<Canvas x:Name="Canvas" Background="{StaticResource ColorNodesCanvasBackground}" >
1013

1114
<local:ViewSelector x:Name="Selector" Panel.ZIndex="999"/>
1215
<local:ViewCutter x:Name="Cutter" Panel.ZIndex="999"/>
13-
14-
<ItemsControl x:Name="Nodes" >
16+
17+
<ItemsControl Panel.ZIndex="0">
18+
<ItemsControl.RenderTransform>
19+
<TransformGroup x:Name="TransformGroup">
20+
<ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1" />
21+
<SkewTransform/>
22+
<RotateTransform Angle="0" />
23+
<TranslateTransform x:Name="Translate"/>
24+
</TransformGroup>
25+
</ItemsControl.RenderTransform>
26+
<ItemsControl.ItemsPanel>
27+
<ItemsPanelTemplate>
28+
<Grid Background="{x:Null}">
29+
</Grid>
30+
</ItemsPanelTemplate>
31+
</ItemsControl.ItemsPanel>
32+
<ItemsControl.Resources >
33+
<DataTemplate DataType="{x:Type ViewModel:ViewModelConnect}">
34+
<View:ViewConnect ViewModel="{Binding}"/>
35+
</DataTemplate>
36+
<DataTemplate DataType="{x:Type ViewModel:ViewModelNode}">
37+
<View:ViewNode ViewModel="{Binding}" />
38+
</DataTemplate>
39+
</ItemsControl.Resources>
40+
<ItemsControl.ItemsSource>
41+
<CompositeCollection>
42+
<CollectionContainer x:Name="Connects" />
43+
<CollectionContainer x:Name="Nodes"/>
44+
</CompositeCollection>
45+
</ItemsControl.ItemsSource>
46+
</ItemsControl>
47+
48+
49+
<!--<ItemsControl x:Name="Nodes" >
1550
<ItemsControl.RenderTransform>
1651
<TransformGroup x:Name="TransformGroup">
1752
<ScaleTransform x:Name="Scale" ScaleX="1" ScaleY="1" />
@@ -28,11 +63,13 @@
2863
</ItemsControl.ItemsPanel>
2964
<ItemsControl.ItemTemplate>
3065
<DataTemplate>
31-
<local:ViewNode ViewModel="{Binding}" />
66+
<View:ViewNode ViewModel="{Binding}" />
3267
</DataTemplate>
3368
</ItemsControl.ItemTemplate>
3469
</ItemsControl>
3570
71+
72+
3673
<ItemsControl x:Name="Connects" >
3774
<ItemsControl.ItemsPanel>
3875
<ItemsPanelTemplate>
@@ -42,10 +79,10 @@
4279
</ItemsControl.ItemsPanel>
4380
<ItemsControl.ItemTemplate>
4481
<DataTemplate>
45-
<local:ViewConnect ViewModel="{Binding}"/>
82+
<View:ViewConnect ViewModel="{Binding}"/>
4683
</DataTemplate>
4784
</ItemsControl.ItemTemplate>
48-
</ItemsControl>
85+
</ItemsControl>-->
4986

5087
</Canvas>
5188
<UserControl.ContextMenu >

SimpleStateMachineNodeEditor/View/ViewNodesCanvas.xaml.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,14 @@ private void SetupBinding()
7070
{
7171
this.WhenActivated(disposable =>
7272
{
73-
this.OneWayBind(this.ViewModel, x => x.Nodes, x => x.Nodes.ItemsSource).DisposeWith(disposable);
74-
this.OneWayBind(this.ViewModel, x => x.Connects, x => x.Connects.ItemsSource).DisposeWith(disposable);
75-
//this.OneWayBind(this.ViewModel, x => x.DraggedConnector, x => x.Connector.ViewModel).DisposeWith(disposable);
7673

77-
//Масштаб по оси X
74+
this.OneWayBind(this.ViewModel, x => x.Nodes, x => x.Nodes.Collection).DisposeWith(disposable);
75+
this.OneWayBind(this.ViewModel, x => x.Connects, x => x.Connects.Collection).DisposeWith(disposable);
76+
77+
78+
//this.OneWayBind(this.ViewModel, x => x.Nodes, x => x.Nodes.ItemsSource).DisposeWith(disposable);
79+
//this.OneWayBind(this.ViewModel, x => x.Connects, x => x.Connects.ItemsSource).DisposeWith(disposable);
80+
7881
this.OneWayBind(this.ViewModel, x => x.Scale.Scales.Value.X, x => x.Scale.ScaleX).DisposeWith(disposable);
7982

8083
//Масштаб по оси Y
@@ -223,7 +226,7 @@ private void OnEventDragOver(DragEventArgs e)
223226
if (this.ViewModel.DraggedConnect != null)
224227
{
225228
point -= 2;
226-
this.ViewModel.DraggedConnect.EndPoint.Set(point);
229+
this.ViewModel.DraggedConnect.EndPoint.Set(point / this.ViewModel.Scale.Value);
227230
}
228231
}
229232
private void OnEventDragLeave(DragEventArgs e)

SimpleStateMachineNodeEditor/View/ViewRightConnector.xaml.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ void UpdatePositionConnectPoin()
181181
positionConnectPoint = this.ViewModel.Node.Output.PositionConnectPoint.Value;
182182
}
183183

184-
this.ViewModel.PositionConnectPoint.Set(positionConnectPoint);
184+
185+
MyPoint Position = MyPoint.CreateFromPoint(positionConnectPoint);
186+
this.ViewModel.PositionConnectPoint.Set(Position / this.ViewModel.NodesCanvas.Scale.Value);
185187
}
186188

187189
//void UpdatePosition()

SimpleStateMachineNodeEditor/ViewModel/ViewModelNode.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public class ViewModelNode : ReactiveValidationObject<ViewModelNode>
9191
/// </summary>
9292
[Reactive] public ViewModelNodesCanvas NodesCanvas { get; set; }
9393

94+
[Reactive] public int Zindex { get; set; }
95+
9496
/// <summary>
9597
/// Список переходов
9698
/// </summary>
@@ -218,8 +220,7 @@ private void AddEmptyConnector()
218220
CurrentConnector.TextEnable = true;
219221
CurrentConnector.FormEnable = false;
220222

221-
//CurrentConnector.Name = "Transition_" + NodesCanvas.Connects.Count.ToString();
222-
CurrentConnector.Name = "T" + NodesCanvas.Connects.Count.ToString();
223+
CurrentConnector.Name = "Transition_" + NodesCanvas.Connects.Count.ToString();
223224
}
224225
CurrentConnector = new ViewModelConnector(NodesCanvas, this)
225226
{

0 commit comments

Comments
 (0)