diff --git a/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/Infrastructure/UI/DataContexts/PrimitiveBase.cs
index 1d56d82..f5d1ff0 100644
--- a/Infrastructure/UI/DataContexts/PrimitiveBase.cs
+++ b/Infrastructure/UI/DataContexts/PrimitiveBase.cs
@@ -27,11 +27,9 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
private IPrimitiveRepository primitiveRepository;
private INdmPrimitive primitive;
private bool captured, parameterCaptured, elementLock, paramsPanelVisibilty, popupCanBeClosed = true, borderCaptured;
- private bool setMaterialColor;
- private Color color;
- private double opacity = 1, showedOpacity = 0, x, y, xY1, yX1, primitiveWidth, primitiveHeight;
+ private double showedOpacity = 0, x, y, xY1, yX1, primitiveWidth, primitiveHeight;
protected double delta = 0.5;
- private int showedZIndex = 1, zIndex;
+ private int showedZIndex = 1;
#endregion
@@ -109,21 +107,23 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
public bool SetMaterialColor
{
- get => setMaterialColor;
+ get => primitive.VisualProperty.SetMaterialColor;
set
{
- OnPropertyChanged(value, ref setMaterialColor);
+ primitive.VisualProperty.SetMaterialColor = value;
OnPropertyChanged(nameof(Color));
}
}
public Color Color
{
- get => ((setMaterialColor == true) & (primitive.HeadMaterial !=null))? primitive.HeadMaterial.Color : color;
+ get => ((primitive.VisualProperty.SetMaterialColor == true)
+ & (primitive.HeadMaterial !=null))? primitive.HeadMaterial.Color : primitive.VisualProperty.Color;
set
{
SetMaterialColor = false;
- OnPropertyChanged(value, ref color);
+ primitive.VisualProperty.Color = value;
+ OnPropertyChanged(nameof(Color));
}
}
@@ -142,11 +142,6 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
get => elementLock;
set => OnPropertyChanged(value, ref elementLock);
}
- public Brush Brush
- {
- get => new SolidColorBrush(Color);
- set { }
- }
public bool ParamsPanelVisibilty
{
@@ -168,10 +163,25 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
OnPropertyChanged(value, ref showedOpacity);
}
}
+
+ public bool IsVisible
+ {
+ get => primitive.VisualProperty.IsVisible;
+ set
+ {
+ primitive.VisualProperty.IsVisible = value;
+ OnPropertyChanged(nameof(IsVisible));
+ }
+ }
+
public double Opacity
{
- get => opacity;
- set => OnPropertyChanged(value, ref opacity);
+ get => primitive.VisualProperty.Opacity;
+ set
+ {
+ primitive.VisualProperty.Opacity = value;
+ OnPropertyChanged(nameof(Opacity));
+ }
}
public int ShowedZIndex
{
@@ -185,8 +195,12 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
}
public int ZIndex
{
- get => zIndex;
- set => OnPropertyChanged(value, ref zIndex);
+ get => primitive.VisualProperty.ZIndex;
+ set
+ {
+ primitive.VisualProperty.ZIndex = value;
+ OnPropertyChanged(nameof(ZIndex));
+ }
}
public double Xy1
@@ -218,8 +232,6 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
public PrimitiveBase(INdmPrimitive primitive)
{
- color = ColorProcessor.GetRandomColor();
- SetMaterialColor = true;
this.primitive = primitive;
}
diff --git a/Infrastructure/UI/Resources/ItemEditPanels.xaml b/Infrastructure/UI/Resources/ItemEditPanels.xaml
index 4cc12ba..c41aa47 100644
--- a/Infrastructure/UI/Resources/ItemEditPanels.xaml
+++ b/Infrastructure/UI/Resources/ItemEditPanels.xaml
@@ -8,7 +8,7 @@
-
+
@@ -16,7 +16,7 @@
+ SelectedItem="{Binding SelectedTargetItem}" ItemTemplate="{Binding ItemDataDemplate}"/>
\ No newline at end of file
diff --git a/Infrastructure/UI/Styles.xaml b/Infrastructure/UI/Styles.xaml
index 2a43656..9cd776f 100644
--- a/Infrastructure/UI/Styles.xaml
+++ b/Infrastructure/UI/Styles.xaml
@@ -19,7 +19,7 @@
-
diff --git a/StructureHelper.csproj b/StructureHelper.csproj
index 49ce676..7d5e8e6 100644
--- a/StructureHelper.csproj
+++ b/StructureHelper.csproj
@@ -238,6 +238,8 @@
+
+
diff --git a/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs b/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
index 8fb5f97..907bd90 100644
--- a/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
+++ b/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
@@ -18,5 +18,6 @@ namespace StructureHelperCommon.Infrastructures.Strings
public static string IncorrectValue => "#0007: value is not valid";
public static string FileCantBeDeleted => "#0008: File can't be deleted";
public static string FileCantBeSaved => "#0009: File can't be saved";
+ public static string VisualPropertyIsNotRight => "#0010: VisualPropertyIsNotRight";
}
}
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs
index 591b09f..f00ad29 100644
--- a/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs
+++ b/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs
@@ -19,6 +19,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
double PrestrainKx { get; set; }
double PrestrainKy { get; set; }
double PrestrainEpsZ { get; set; }
+ IVisualProperty VisualProperty {get; }
IEnumerable GetNdms(IMaterial material);
}
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs b/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs
new file mode 100644
index 0000000..c93eda5
--- /dev/null
+++ b/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IVisualProperty
+ {
+ bool IsVisible { get; set; }
+ Color Color { get; set; }
+ bool SetMaterialColor { get; set; }
+ int ZIndex { get; set; }
+ double Opacity { get; set; }
+ }
+}
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs
index 56eab9c..9df236d 100644
--- a/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs
+++ b/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs
@@ -30,7 +30,8 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
public IPoint2D StartPoint { get; set; }
public IPoint2D EndPoint { get; set; }
public double Thickness { get; set; }
-
+
+ public IVisualProperty VisualProperty => throw new NotImplementedException();
public LinePrimitive()
{
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs
index 460d809..6435b92 100644
--- a/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs
+++ b/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs
@@ -25,18 +25,17 @@ namespace StructureHelperLogics.Models.Primitives
public double PrestrainKy { get; set; }
public double PrestrainEpsZ { get; set; }
public double Area { get; set; }
-
+
+ public IVisualProperty VisualProperty { get; }
public PointPrimitive()
{
Name = "New Point";
Area = 0.0005d;
+ VisualProperty = new VisualProperty();
}
- public PointPrimitive(IHeadMaterial material)
- {
- HeadMaterial = material;
- }
+ public PointPrimitive(IHeadMaterial material) : this() { HeadMaterial = material; }
public IEnumerable GetNdms(IMaterial material)
{
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs
index b352113..87abf07 100644
--- a/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs
+++ b/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs
@@ -31,11 +31,14 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
public double Height { get; set; }
public double Angle { get; set; }
+ public IVisualProperty VisualProperty { get; }
+
public RectanglePrimitive()
{
Name = "New Rectangle";
NdmMaxSize = 0.01d;
NdmMinDivision = 10;
+ VisualProperty = new VisualProperty();
}
public RectanglePrimitive(IHeadMaterial material) : this() { HeadMaterial = material; }
diff --git a/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs b/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs
new file mode 100644
index 0000000..b729485
--- /dev/null
+++ b/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs
@@ -0,0 +1,42 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Services.ColorServices;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public class VisualProperty : IVisualProperty
+ {
+
+ public bool IsVisible { get; set; }
+ public Color Color { get; set; }
+ public bool SetMaterialColor { get; set; }
+ public int ZIndex { get; set; }
+ private double opacity;
+
+ public double Opacity
+ {
+ get { return opacity; }
+ set
+ {
+ if (value < 0d || value > 1d) { throw new StructureHelperException(ErrorStrings.VisualPropertyIsNotRight + nameof(Opacity) + value); }
+ opacity = value;
+ }
+ }
+
+
+ public VisualProperty()
+ {
+ IsVisible = true;
+ Color = ColorProcessor.GetRandomColor();
+ SetMaterialColor = true;
+ ZIndex = 0;
+ Opacity = 1;
+ }
+ }
+}
diff --git a/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs b/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs
index 8fb110a..9e994fe 100644
--- a/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs
+++ b/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs
@@ -15,10 +15,22 @@ namespace StructureHelperLogics.Services.NdmPrimitives
{
public static class NdmPrimitivesService
{
+ public static void CopyVisualProperty(IVisualProperty source, IVisualProperty target)
+ {
+ target.IsVisible = source.IsVisible;
+ target.Color = source.Color;
+ target.SetMaterialColor = source.SetMaterialColor;
+ target.Opacity = source.Opacity;
+ target.ZIndex = source.ZIndex;
+ }
+
public static void CopyNdmProperties (INdmPrimitive source, INdmPrimitive target)
{
- target.Name = source.Name + " - copy" ;
- target.HeadMaterial = source.HeadMaterial;
+ target.Name = source.Name + " copy" ;
+ if (source.HeadMaterial != null) target.HeadMaterial = source.HeadMaterial;
+ CopyVisualProperty(source.VisualProperty, target.VisualProperty);
+ target.CenterX = source.CenterX;
+ target.CenterY = source.CenterY;
target.PrestrainKx = source.PrestrainKx;
target.PrestrainKy = source.PrestrainKy;
target.PrestrainEpsZ = source.PrestrainEpsZ;
diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml b/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
index b84e77d..df2b42e 100644
--- a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
+++ b/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
@@ -47,23 +47,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/Windows/MainWindow/MainView.xaml b/Windows/MainWindow/MainView.xaml
index e382fee..190da84 100644
--- a/Windows/MainWindow/MainView.xaml
+++ b/Windows/MainWindow/MainView.xaml
@@ -21,6 +21,7 @@
+
@@ -94,20 +95,23 @@
-
+
-
+
-
-
+
+
+
+
+
@@ -170,22 +174,10 @@
-
-
+
@@ -196,6 +188,7 @@
+
@@ -213,7 +206,7 @@
-
+
diff --git a/Windows/MainWindow/MainViewModel.cs b/Windows/MainWindow/MainViewModel.cs
index b290667..c0a16cc 100644
--- a/Windows/MainWindow/MainViewModel.cs
+++ b/Windows/MainWindow/MainViewModel.cs
@@ -1,31 +1,23 @@
using LoaderCalculator.Data.Ndms;
using LoaderCalculator.Logics.Geometry;
using StructureHelper.Infrastructure;
-using StructureHelper.Infrastructure.Enums;
using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelper.MaterialCatalogWindow;
using StructureHelper.Models.Materials;
-using StructureHelper.Models.Primitives.Factories;
using StructureHelper.Windows.CalculationWindows.CalculationPropertyWindow;
using StructureHelper.Windows.CalculationWindows.CalculationResultWindow;
using StructureHelper.Windows.ColorPickerWindow;
using StructureHelper.Windows.MainWindow.Materials;
-using StructureHelper.Windows.PrimitiveProperiesWindow;
using StructureHelper.Windows.PrimitiveTemplates.RCs.RectangleBeam;
using StructureHelper.Windows.ViewModels.Calculations.CalculationProperies;
using StructureHelper.Windows.ViewModels.Calculations.CalculationResult;
using StructureHelper.Windows.ViewModels.NdmCrossSections;
-using StructureHelperCommon.Infrastructures.Exceptions;
-using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Infrastructures.Strings;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.Models.Calculations.CalculationProperties;
using StructureHelperLogics.Models.CrossSections;
-using StructureHelperLogics.Models.Materials;
-using StructureHelperLogics.Models.Primitives;
using StructureHelperLogics.Models.Templates.CrossSections.RCs;
using StructureHelperLogics.Models.Templates.RCs;
-using StructureHelperLogics.NdmCalculations.Primitives;
using StructureHelperLogics.Services.NdmCalculations;
using System;
using System.Collections.Generic;
@@ -54,9 +46,9 @@ namespace StructureHelper.Windows.MainWindow
private readonly ICalculatorsViewModelLogic calculatorsLogic;
public ICalculatorsViewModelLogic CalculatorsLogic { get => calculatorsLogic;}
public IForceCombinationViewModelLogic CombinationsLogic { get => combinationsLogic; }
+ public IPrimitiveViewModelLogic PrimitiveLogic => primitiveLogic;
private MainModel Model { get; }
- public ObservableCollection Primitives { get; private set; }
private double panelX, panelY, scrollPanelX, scrollPanelY;
private CalculationProperty calculationProperty;
@@ -82,8 +74,6 @@ namespace StructureHelper.Windows.MainWindow
set => OnPropertyChanged(value, ref scrollPanelY);
}
- public int PrimitivesCount => Primitives.Count;
-
private double scaleValue;
public double ScaleValue
@@ -155,13 +145,10 @@ namespace StructureHelper.Windows.MainWindow
get => yY2;
set => OnPropertyChanged(value, ref yY2);
}
- public ICommand AddPrimitive { get; }
public ICommand Calculate { get; }
- public ICommand DeletePrimitive { get; }
public ICommand EditCalculationPropertyCommand { get; }
public ICommand EditHeadMaterialsCommand { get; }
- public ICommand EditPrimitive { get; }
public ICommand AddBeamCase { get; }
public ICommand AddColumnCase { get; }
public ICommand AddSlabCase { get; }
@@ -185,6 +172,7 @@ namespace StructureHelper.Windows.MainWindow
private double axisLineThickness;
private double gridLineThickness;
private IForceCombinationViewModelLogic combinationsLogic;
+ private IPrimitiveViewModelLogic primitiveLogic;
public MainViewModel(MainModel model)
{
@@ -194,6 +182,7 @@ namespace StructureHelper.Windows.MainWindow
calculatorsLogic = new CalculatorsViewModelLogic(repository);
CanvasWidth = 2d * scale;
CanvasHeight = 1.5d * scale;
+ primitiveLogic = new PrimitiveViewModelLogic(repository) { CanvasWidth = CanvasWidth, CanvasHeight = CanvasHeight };
XX2 = CanvasWidth;
XY1 = CanvasHeight / 2d;
YX1 = CanvasWidth / 2d;
@@ -226,15 +215,6 @@ namespace StructureHelper.Windows.MainWindow
rect.PrimitiveHeight = PanelY - rect.PrimitiveTop + 10d;
}
});
- ClearSelection = new RelayCommand(o =>
- {
- var primitive = Primitives?.FirstOrDefault(x => x.ParamsPanelVisibilty);
- if (primitive != null && primitive.PopupCanBeClosed)
- {
- primitive.ParamsPanelVisibilty = false;
- primitive.ParameterCaptured = false;
- }
- });
EditHeadMaterialsCommand = new RelayCommand(o => EditHeadMaterials());
OpenMaterialCatalog = new RelayCommand(o =>
{
@@ -254,24 +234,6 @@ namespace StructureHelper.Windows.MainWindow
var colorPickerView = new ColorPickerView(primitive);
colorPickerView.ShowDialog();
});
- SetInFrontOfAll = new RelayCommand(o =>
- {
- if (!(o is PrimitiveBase primitive)) return;
- foreach (var primitiveDefinition in Primitives)
- if (primitiveDefinition.ShowedZIndex > primitive.ShowedZIndex && primitiveDefinition != primitive)
- primitiveDefinition.ShowedZIndex--;
- primitive.ShowedZIndex = PrimitivesCount;
- OnPropertyChanged(nameof(primitive.ShowedZIndex));
- });
- SetInBackOfAll = new RelayCommand(o =>
- {
- if (!(o is PrimitiveBase primitive)) return;
- foreach (var primitiveDefinition in Primitives)
- if (primitiveDefinition != primitive && primitiveDefinition.ShowedZIndex < primitive.ShowedZIndex)
- primitiveDefinition.ShowedZIndex++;
- primitive.ShowedZIndex = 1;
- OnPropertyChanged(nameof(primitive.ShowedZIndex));
- });
ScaleCanvasDown = new RelayCommand(o =>
{
@@ -287,83 +249,20 @@ namespace StructureHelper.Windows.MainWindow
ScaleValue /= scaleRate;
});
- Primitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(repository.Primitives);
-
- AddPrimitive = new RelayCommand(o =>
- {
- if (!(o is PrimitiveType primitiveType)) return;
- PrimitiveBase viewPrimitive;
- INdmPrimitive ndmPrimitive;
- if (primitiveType == PrimitiveType.Rectangle)
- {
- var primitive = new RectanglePrimitive
- {
- Width = 0.4d,
- Height = 0.6d
- };
- ndmPrimitive = primitive;
- viewPrimitive = new RectangleViewPrimitive(primitive);
-
- }
- else if (primitiveType == PrimitiveType.Point)
- {
- var primitive = new PointPrimitive
- {
- Area = 0.0005d
- };
- ndmPrimitive = primitive;
- viewPrimitive = new PointViewPrimitive(primitive);
- }
-
- else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(primitiveType)); }
- viewPrimitive.RegisterDeltas(CanvasWidth / 2, CanvasHeight / 2);
- repository.Primitives.Add(ndmPrimitive);
- Primitives.Add(viewPrimitive);
- OnPropertyChanged(nameof(Primitives));
- OnPropertyChanged(nameof(PrimitivesCount));
- });
-
- DeletePrimitive = new RelayCommand(
- o=>DeleteSelectedPrimitive(),
- o => SelectedPrimitive != null
- );
-
- EditPrimitive = new RelayCommand(
- o => EditSelectedPrimitive(),
- o => SelectedPrimitive != null
- );
-
AddBeamCase = new RelayCommand(o =>
{
- foreach (var primitive in GetBeamCasePrimitives())
- {
- Primitives.Add(primitive);
- var ndmPrimitive = primitive.GetNdmPrimitive();
- repository.Primitives.Add(ndmPrimitive);
- }
- OnPropertyChanged(nameof(PrimitivesCount));
+ PrimitiveLogic.AddItems(GetBeamCasePrimitives());
+ //OnPropertyChanged(nameof(PrimitivesCount));
});
AddColumnCase = new RelayCommand(o =>
{
- foreach (var primitive in GetColumnCasePrimitives())
- {
- Primitives.Add(primitive);
- var ndmPrimitive = primitive.GetNdmPrimitive();
- repository.Primitives.Add(ndmPrimitive);
- }
- OnPropertyChanged(nameof(PrimitivesCount));
+ PrimitiveLogic.AddItems(GetColumnCasePrimitives());
});
AddSlabCase = new RelayCommand(o =>
{
- foreach (var primitive in GetSlabCasePrimitives())
- {
- Primitives.Add(primitive);
- var ndmPrimitive = primitive.GetNdmPrimitive();
- repository.Primitives.Add(ndmPrimitive);
- }
- OnPropertyChanged(nameof(PrimitivesCount));
+ PrimitiveLogic.AddItems(GetSlabCasePrimitives());
});
Calculate = new RelayCommand(o =>
@@ -406,39 +305,12 @@ namespace StructureHelper.Windows.MainWindow
var wnd = new HeadMaterialsView(repository);
wnd.ShowDialog();
OnPropertyChanged(nameof(HeadMaterials));
- foreach (var primitive in Primitives)
+ foreach (var primitive in primitiveLogic.Items)
{
primitive.RefreshColor();
}
}
- private void DeleteSelectedPrimitive()
- {
- if (! (SelectedPrimitive is null))
- {
- var dialogResult = MessageBox.Show("Delete primitive?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
- if (dialogResult == DialogResult.Yes)
- {
- var ndmPrimitive = SelectedPrimitive.GetNdmPrimitive();
- repository.Primitives.Remove(ndmPrimitive);
- Primitives.Remove(SelectedPrimitive);
- }
- }
- else { MessageBox.Show("Selection is changed", "Please, select primitive", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); }
- OnPropertyChanged(nameof(PrimitivesCount));
- }
-
- private void EditSelectedPrimitive()
- {
- if (!(SelectedPrimitive is null))
- {
- var wnd = new PrimitiveProperties(SelectedPrimitive, repository);
- wnd.ShowDialog();
- OnPropertyChanged(nameof(HeadMaterials));
- }
- else { MessageBox.Show("Selection is changed", "Please, select primitive", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); }
- }
-
private void CalculateResult()
{
bool check = CheckAnalisysOptions();
@@ -460,16 +332,14 @@ namespace StructureHelper.Windows.MainWindow
MessageBox.Show($"{ErrorStrings.UnknownError}: {ex}", "Check data for analisys", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
-
private bool CheckAnalisysOptions()
{
if (CheckMaterials() == false) { return false; }
return true;
}
-
private bool CheckMaterials()
{
- foreach (var item in Primitives)
+ foreach (var item in primitiveLogic.Items)
{
if (item.HeadMaterial == null)
{
@@ -479,32 +349,27 @@ namespace StructureHelper.Windows.MainWindow
}
return true;
}
-
private IEnumerable GetBeamCasePrimitives()
{
var template = new RectangleBeamTemplate();
return GetCasePrimitives(template);
}
-
private IEnumerable GetColumnCasePrimitives()
{
var template = new RectangleBeamTemplate(0.5d, 0.5d) { CoverGap = 0.05, WidthCount = 3, HeightCount = 3, TopDiameter = 0.025d, BottomDiameter = 0.025d };
return GetCasePrimitives(template);
}
-
private IEnumerable GetSlabCasePrimitives()
{
var template = new RectangleBeamTemplate(1d, 0.2d) { CoverGap = 0.04, WidthCount = 5, HeightCount = 2, TopDiameter = 0.012d, BottomDiameter = 0.012d };
return GetCasePrimitives(template);
}
-
private void EditCalculationProperty()
{
CalculationPropertyViewModel viewModel = new CalculationPropertyViewModel(calculationProperty);
var view = new CalculationPropertyView(viewModel);
view.ShowDialog();
}
-
private IEnumerable GetCasePrimitives(RectangleBeamTemplate template)
{
var wnd = new RectangleBeamView(template);
@@ -520,13 +385,12 @@ namespace StructureHelper.Windows.MainWindow
OnPropertyChanged(nameof(HeadMaterials));
CombinationsLogic.AddItems(newRepository.ForceCombinationLists);
CalculatorsLogic.AddItems(newRepository.CalculatorsList);
- //OnPropertyChanged(nameof(CombinationsLogic.Items));
- //OnPropertyChanged(nameof(CalculatorsLogic.Items));
var primitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(newRepository.Primitives);
foreach (var item in primitives)
{
item.RegisterDeltas(CanvasWidth / 2, CanvasHeight / 2);
}
+ PrimitiveLogic.Refresh();
return primitives;
}
return new List();
diff --git a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
index 691ae62..ac1d3ef 100644
--- a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
+++ b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
@@ -1,4 +1,4 @@
-
+
@@ -61,84 +62,115 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
index 5627c1e..cff5505 100644
--- a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
+++ b/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
@@ -25,11 +25,11 @@ namespace StructureHelper.Windows.PrimitiveProperiesWindow
///
/// Логика взаимодействия для PrimitiveProperties.xaml
///
- public partial class PrimitiveProperties : Window
+ public partial class PrimitivePropertiesView : Window
{
PrimitiveBase primitive;
private PrimitivePropertiesViewModel viewModel;
- public PrimitiveProperties(PrimitiveBase primitive, IHasHeadMaterials headMaterials)
+ public PrimitivePropertiesView(PrimitiveBase primitive, IHasHeadMaterials headMaterials)
{
this.primitive = primitive;
viewModel = new PrimitivePropertiesViewModel(this.primitive, headMaterials);
diff --git a/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs b/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
index 8f74036..b0c19ef 100644
--- a/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
+++ b/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
@@ -1,5 +1,6 @@
using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.UI.DataContexts;
+using StructureHelper.Services.Primitives;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
@@ -13,6 +14,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
@@ -48,7 +50,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
public bool LongTerm { get; set; }
public ISourceToTargetViewModel CombinationViewModel { get; }
- //public ISourceToTargetViewModel PrimitivesViewModel { get; }
+ public ISourceToTargetViewModel PrimitivesViewModel { get; }
public PrimitiveBase SelectedAllowedPrimitive { get; set; }
public PrimitiveBase SelectedPrimitive { get; set; }
@@ -60,7 +62,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
var sourceItems = forcesCalculator.Primitives;
var rejectedItems = allowedPrimitives.Where(x => sourceItems.Contains(x));
var filteredItems = allowedPrimitives.Except(rejectedItems);
- return ConvertNdmPrimitivesToPrimitiveBase(filteredItems);
+ return PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(filteredItems);
}
}
public ObservableCollection Primitives
@@ -68,7 +70,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
get
{
var sourceItems = forcesCalculator.Primitives;
- return ConvertNdmPrimitivesToPrimitiveBase(sourceItems);
+ return PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(sourceItems);
}
}
@@ -149,37 +151,19 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
CombinationViewModel = new SourceToTargetViewModel();
CombinationViewModel.SetTargetItems(forcesCalculator.ForceCombinationLists);
CombinationViewModel.SetSourceItems(allowedForceCombinations);
+ CombinationViewModel.ItemDataDemplate = Application.Current.Resources["SimpleItemTemplate"] as DataTemplate;
- //PrimitivesViewModel = new SourceToTargetViewModel();
- //var targetItems = forcesCalculator.NdmPrimitives;
- //var viewPrimitives = ConvertNdmPrimitivesToPrimitiveBase(targetItems);
- //PrimitivesViewModel.SetTargetItems(viewPrimitives);
- //var sourceViewPrimitives = ConvertNdmPrimitivesToPrimitiveBase(allowedPrimitives) ;
- //PrimitivesViewModel.SetSourceItems(sourceViewPrimitives);
+ PrimitivesViewModel = new SourceToTargetViewModel();
+ var targetItems = forcesCalculator.Primitives;
+ var sourceViewPrimitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(allowedPrimitives);
+ var viewPrimitives = sourceViewPrimitives.Where(x => targetItems.Contains(x.GetNdmPrimitive()));
+ PrimitivesViewModel.SetTargetItems(viewPrimitives);
+ PrimitivesViewModel.SetSourceItems(sourceViewPrimitives);
+ PrimitivesViewModel.ItemDataDemplate = Application.Current.Resources["ColoredItemTemplate"] as DataTemplate;
InputRefresh();
}
- private ObservableCollection ConvertNdmPrimitivesToPrimitiveBase(IEnumerable primitives)
- {
- ObservableCollection viewItems = new ObservableCollection();
- foreach (var item in primitives)
- {
- if (item is IPointPrimitive)
- {
- var point = item as IPointPrimitive;
- viewItems.Add(new PointViewPrimitive(point));
- }
- else if (item is IRectanglePrimitive)
- {
- var rect = item as IRectanglePrimitive;
- viewItems.Add(new RectangleViewPrimitive(rect));
- }
- else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
- }
- return viewItems;
- }
-
public void InputRefresh()
{
ULS = forcesCalculator.LimitStatesList.Contains(LimitStates.ULS);
@@ -196,11 +180,11 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
{
forcesCalculator.ForceCombinationLists.Add(item);
}
- //forcesCalculator.NdmPrimitives.Clear();
- //foreach (var item in PrimitivesViewModel.GetTargetItems())
- //{
- // forcesCalculator.NdmPrimitives.Add(item.GetNdmPrimitive());
- //}
+ forcesCalculator.Primitives.Clear();
+ foreach (var item in PrimitivesViewModel.GetTargetItems())
+ {
+ forcesCalculator.Primitives.Add(item.GetNdmPrimitive());
+ }
forcesCalculator.LimitStatesList.Clear();
if (ULS == true) { forcesCalculator.LimitStatesList.Add(LimitStates.ULS); }
if (SLS == true) { forcesCalculator.LimitStatesList.Add(LimitStates.SLS); }
diff --git a/Windows/ViewModels/ISourceToTargetViewModel.cs b/Windows/ViewModels/ISourceToTargetViewModel.cs
index 56f5171..a624e68 100644
--- a/Windows/ViewModels/ISourceToTargetViewModel.cs
+++ b/Windows/ViewModels/ISourceToTargetViewModel.cs
@@ -5,6 +5,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
namespace StructureHelper.Windows.ViewModels
{
@@ -14,6 +15,7 @@ namespace StructureHelper.Windows.ViewModels
TItem SelectedTargetItem { get; set; }
ObservableCollection SourceItems { get; }
ObservableCollection TargetItems { get; }
+ DataTemplate ItemDataDemplate { get; set; }
RelayCommand AddAll { get; }
RelayCommand ClearAll { get; }
RelayCommand AddSelected { get; }
diff --git a/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs b/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs
index c453a47..d6f2019 100644
--- a/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs
+++ b/Windows/ViewModels/NdmCrossSections/CalculatorsViewModelLogic.cs
@@ -21,14 +21,14 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
public INdmCalculator SelectedItem { get; set; }
public ObservableCollection Items { get; private set; }
- private RelayCommand addCalculatorCommand;
+ private RelayCommand addCommand;
public RelayCommand Add
{
get
{
- return addCalculatorCommand ??
+ return addCommand ??
(
- addCalculatorCommand = new RelayCommand(o =>
+ addCommand = new RelayCommand(o =>
{
AddCalculator();
OnPropertyChanged(nameof(Items));
@@ -41,14 +41,14 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
Items.Add(item);
repository.CalculatorsList.Add(item);
}
- private RelayCommand editCalculatorCommand;
+ private RelayCommand editCommand;
public RelayCommand Edit
{
get
{
- return editCalculatorCommand ??
+ return editCommand ??
(
- editCalculatorCommand = new RelayCommand(o =>
+ editCommand = new RelayCommand(o =>
{
var tmpSelected = SelectedItem;
EditCalculator();
@@ -70,23 +70,22 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
wnd.ShowDialog();
}
}
- private RelayCommand deleteCalculatorCommand;
+ private RelayCommand deleteCommand;
private RelayCommand runCommand;
- private RelayCommand copyCalculatorCommand;
+ private RelayCommand copyCommand;
public RelayCommand Delete
{
get
{
- return deleteCalculatorCommand ??
+ return deleteCommand ??
(
- deleteCalculatorCommand = new RelayCommand(o =>
+ deleteCommand = new RelayCommand(o =>
{
DeleteCalculator();
}, o => SelectedItem != null));
}
}
-
public RelayCommand Run
{
get
@@ -111,14 +110,13 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
}, o => SelectedItem != null));
}
}
-
public RelayCommand Copy
{
get
{
- return copyCalculatorCommand ??
+ return copyCommand ??
(
- copyCalculatorCommand = new RelayCommand(o =>
+ copyCommand = new RelayCommand(o =>
{
var item = SelectedItem.Clone() as INdmCalculator;
repository.CalculatorsList.Add(item);
@@ -127,7 +125,6 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
}, o => SelectedItem != null));
}
}
-
private void DeleteCalculator()
{
var dialogResult = MessageBox.Show("Delete calculator?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
diff --git a/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs b/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs
new file mode 100644
index 0000000..ae0638c
--- /dev/null
+++ b/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs
@@ -0,0 +1,13 @@
+using StructureHelper.Infrastructure;
+using StructureHelper.Infrastructure.UI.DataContexts;
+
+namespace StructureHelper.Windows.ViewModels.NdmCrossSections
+{
+ public interface IPrimitiveViewModelLogic : ICRUDViewModel
+ {
+ RelayCommand SetToFront { get; }
+ RelayCommand SetToBack { get; }
+ int PrimitivesCount { get; }
+ void Refresh();
+ }
+}
diff --git a/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs b/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
new file mode 100644
index 0000000..81efbf7
--- /dev/null
+++ b/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
@@ -0,0 +1,227 @@
+using FieldVisualizer.ViewModels;
+using StructureHelper.Infrastructure.UI.DataContexts;
+using StructureHelperLogics.Models.CrossSections;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using StructureHelper.Services.Primitives;
+using StructureHelper.Infrastructure;
+using StructureHelper.Infrastructure.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperCommon.Infrastructures.Strings;
+using ViewModelBase = StructureHelper.Infrastructure.ViewModelBase;
+using System.Windows.Forms;
+using System.Windows.Documents;
+using StructureHelper.Windows.PrimitiveProperiesWindow;
+
+namespace StructureHelper.Windows.ViewModels.NdmCrossSections
+{
+ public class PrimitiveViewModelLogic : ViewModelBase, IPrimitiveViewModelLogic
+ {
+ private readonly ICrossSectionRepository repository;
+ private RelayCommand addCommand;
+ private RelayCommand deleteCommand;
+ private RelayCommand editCommand;
+ private RelayCommand copyCommand;
+ private RelayCommand setToFront;
+ private RelayCommand setToBack;
+
+ public double CanvasWidth { get; set; }
+ public double CanvasHeight { get; set; }
+
+ public PrimitiveBase SelectedItem { get; set; }
+
+ public ObservableCollection Items { get; private set; }
+
+ public RelayCommand Add
+ {
+ get
+ {
+ return addCommand ??
+ (
+ addCommand = new RelayCommand(o =>
+ {
+ if (!(o is PrimitiveType primitiveType)) return;
+ AddPrimitive(primitiveType);
+ }
+ ));
+ }
+ }
+
+ private void AddPrimitive(PrimitiveType primitiveType)
+ {
+ PrimitiveBase viewPrimitive;
+ INdmPrimitive ndmPrimitive;
+ if (primitiveType == PrimitiveType.Rectangle)
+ {
+ var primitive = new RectanglePrimitive
+ {
+ Width = 0.4d,
+ Height = 0.6d
+ };
+ ndmPrimitive = primitive;
+ viewPrimitive = new RectangleViewPrimitive(primitive);
+
+ }
+ else if (primitiveType == PrimitiveType.Point)
+ {
+ var primitive = new PointPrimitive
+ {
+ Area = 0.0005d
+ };
+ ndmPrimitive = primitive;
+ viewPrimitive = new PointViewPrimitive(primitive);
+ }
+
+ else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(primitiveType)); }
+ viewPrimitive.RegisterDeltas(CanvasWidth / 2, CanvasHeight / 2);
+ repository.Primitives.Add(ndmPrimitive);
+ Items.Add(viewPrimitive);
+ OnPropertyChanged(nameof(Items));
+ OnPropertyChanged(nameof(PrimitivesCount));
+ }
+
+ public RelayCommand Delete
+ {
+ get
+ {
+ return deleteCommand ??
+ (
+ deleteCommand = new RelayCommand(o=>
+ DeleteSelectedPrimitive(),
+ o => SelectedItem != null
+ ));
+ }
+ }
+
+ private void DeleteSelectedPrimitive()
+ {
+ var dialogResult = MessageBox.Show("Delete primitive?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (dialogResult == DialogResult.Yes)
+ {
+ var ndmPrimitive = SelectedItem.GetNdmPrimitive();
+ repository.Primitives.Remove(ndmPrimitive);
+ Items.Remove(SelectedItem);
+ }
+ OnPropertyChanged(nameof(Items));
+ OnPropertyChanged(nameof(PrimitivesCount));
+ }
+
+ public RelayCommand Edit
+ {
+ get
+ {
+ return editCommand ??
+ (
+ editCommand = new RelayCommand(
+ o => EditSelectedItem(),
+ o => SelectedItem != null
+ ));
+ }
+ }
+
+ private void EditSelectedItem()
+ {
+ var wnd = new PrimitivePropertiesView(SelectedItem, repository);
+ wnd.ShowDialog();
+ }
+
+ public RelayCommand Copy
+ {
+ get
+ {
+ return copyCommand ??
+ (
+ copyCommand = new RelayCommand(
+ o => CopySelectedItem(),
+ o => SelectedItem != null
+ ));
+ }
+ }
+
+ private void CopySelectedItem()
+ {
+ var oldPrimitive = SelectedItem.GetNdmPrimitive();
+ var newPrimitive = oldPrimitive.Clone() as INdmPrimitive;
+ repository.Primitives.Add(newPrimitive);
+ PrimitiveBase primitiveBase;
+ if (newPrimitive is IRectanglePrimitive) { primitiveBase = new RectangleViewPrimitive(newPrimitive as IRectanglePrimitive); }
+ else if (newPrimitive is IPointPrimitive) { primitiveBase = new PointViewPrimitive(newPrimitive as IPointPrimitive); }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
+ primitiveBase.RegisterDeltas(CanvasWidth / 2, CanvasHeight / 2);
+ Items.Add(primitiveBase);
+ OnPropertyChanged(nameof(Items));
+ OnPropertyChanged(nameof(PrimitivesCount));
+ }
+
+ public int PrimitivesCount => repository.Primitives.Count();
+
+ public RelayCommand SetToFront
+ {
+ get
+ {
+ return setToFront ??
+ (setToFront = new RelayCommand(o=>
+ {
+ int maxZIndex = Items.Select(x => x.GetNdmPrimitive().VisualProperty.ZIndex).Max();
+ SelectedItem.ZIndex = maxZIndex + 1;
+ },o => CheckMaxIndex()
+ ));
+ }
+ }
+ private bool CheckMaxIndex()
+ {
+ if (SelectedItem is null) return false;
+ int maxZIndex = Items.Select(x => x.GetNdmPrimitive().VisualProperty.ZIndex).Max();
+ if (SelectedItem.ZIndex <= maxZIndex) return true;
+ else return false;
+ }
+
+ private bool CheckMinIndex()
+ {
+ if (SelectedItem is null) return false;
+ int minZIndex = Items.Select(x => x.GetNdmPrimitive().VisualProperty.ZIndex).Min();
+ if (SelectedItem.ZIndex >= minZIndex) return true;
+ else return false;
+ }
+
+ public RelayCommand SetToBack
+ {
+ get
+ {
+ return setToBack ??
+ (setToBack = new RelayCommand(o =>
+ {
+ int minZIndex = Items.Select(x => x.GetNdmPrimitive().VisualProperty.ZIndex).Min();
+ SelectedItem.ZIndex = minZIndex - 1;
+ }, o => CheckMinIndex()
+ ));
+ }
+ }
+
+ public void AddItems(IEnumerable items)
+ {
+ foreach (var item in items)
+ {
+ Items.Add(item);
+ }
+ }
+
+ public void Refresh()
+ {
+ OnPropertyChanged(nameof(PrimitivesCount));
+ }
+
+ public PrimitiveViewModelLogic(ICrossSectionRepository repository)
+ {
+ this.repository = repository;
+ Items = new ObservableCollection();
+ AddItems(PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(this.repository.Primitives));
+ }
+ }
+}
diff --git a/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs b/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
index ab2caf8..fb055ad 100644
--- a/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
+++ b/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
@@ -206,6 +206,28 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
}
}
+ public bool IsVisible
+ {
+ get => primitive.IsVisible;
+ set
+ {
+ primitive.IsVisible = value;
+ OnPropertyChanged(nameof(IsVisible));
+ }
+ }
+
+ public double Opacity
+ {
+ get => primitive.Opacity * 100d;
+ set
+ {
+ if (value < 0d ) { value = 0d; }
+ if (value > 100d) { value = 100d; }
+ primitive.Opacity = value / 100d;
+ OnPropertyChanged(nameof(Opacity));
+ }
+ }
+
public string this[string columnName]
{
get
diff --git a/Windows/ViewModels/SourceToTargetViewModel.cs b/Windows/ViewModels/SourceToTargetViewModel.cs
index cb914f7..d813dfa 100644
--- a/Windows/ViewModels/SourceToTargetViewModel.cs
+++ b/Windows/ViewModels/SourceToTargetViewModel.cs
@@ -7,6 +7,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
namespace StructureHelper.Windows.ViewModels
{
@@ -23,6 +24,7 @@ namespace StructureHelper.Windows.ViewModels
public TItem SelectedTargetItem { get; set; }
public ObservableCollection SourceItems { get; }
public ObservableCollection TargetItems { get; }
+ public DataTemplate ItemDataDemplate { get; set; }
public RelayCommand AddAll
{
get
@@ -82,6 +84,8 @@ namespace StructureHelper.Windows.ViewModels
}
}
+
+
public SourceToTargetViewModel()
{
SourceItems = new ObservableCollection();