Init commit

This commit is contained in:
NickAppLab
2022-06-13 21:24:13 +05:00
commit 60eb406cbe
42 changed files with 3806 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
<Window x:Class="StructureHelper.AddMaterialView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StructureHelper"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:AddMaterialViewModel}"
Title="Добавление материала" Height="350" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="{Binding RowHeight}"/>
<RowDefinition Height="40"/>
<RowDefinition Height="{Binding RowHeight}"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Группа материалов"/>
<ComboBox Grid.Row="0" Grid.Column="1" Margin="10" ItemsSource="{Binding Materials}" DisplayMemberPath="Name" SelectedItem="{Binding MaterialCollection}"/>
<TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Класс"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="10" Text="{Binding MaterialClass}"/>
<TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Модуль упругости" IsEnabled="{Binding IsNotConcrete}"/>
<TextBox Grid.Row="2" Grid.Column="1" Margin="10" IsEnabled="{Binding IsNotConcrete}" Text="{Binding YoungModulus}"/>
<TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Нормативная прочность на сжатие"/>
<TextBox Grid.Row="3" Grid.Column="1" Margin="10" Text="{Binding CompressiveStrengthCoef}"/>
<TextBlock Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Нормативная прочность на растяжение" IsEnabled="{Binding IsNotConcrete}"/>
<TextBox Grid.Row="4" Grid.Column="1" Margin="10" Text="{Binding TensileStrengthCoef}" IsEnabled="{Binding IsNotConcrete}"/>
<TextBlock Grid.Row="5" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Коэффициент надежности при сжатии"/>
<TextBox Grid.Row="5" Grid.Column="1" Margin="10" Text="{Binding MaterialCoefInCompress}"/>
<TextBlock Grid.Row="6" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10" Text="Коэффициент надежности при расширении"/>
<TextBox Grid.Row="6" Grid.Column="1" Margin="10" Text="{Binding MaterialCoefInTension}"/>
</Grid>
<Button Grid.Row="1" Grid.Column="0" Margin="10" HorizontalAlignment="Left" Content="Добавить материал" Command="{Binding AddMaterial}"/>
</Grid>
</Window>

View File

@@ -0,0 +1,17 @@
using System.Windows;
namespace StructureHelper
{
/// <summary>
/// Логика взаимодействия для AddMaterialView.xaml
/// </summary>
public partial class AddMaterialView : Window
{
public AddMaterialView(MaterialCatalogModel model, MaterialCatalogViewModel materialCatalogViewModel)
{
var viewModel = new AddMaterialViewModel(model, this, materialCatalogViewModel);
DataContext = viewModel;
InitializeComponent();
}
}
}

View File

@@ -0,0 +1,82 @@
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows.Input;
using StructureHelper.Infrastructure;
namespace StructureHelper
{
public class AddMaterialViewModel : ViewModelBase
{
private MaterialCatalogModel model;
private AddMaterialView view;
private MaterialCatalogViewModel materialCatalogViewModel;
public ObservableCollection<NamedList<MaterialDefinitionBase>> Materials { get; set; }
private NamedList<MaterialDefinitionBase> materialCollection;
public NamedList<MaterialDefinitionBase> MaterialCollection
{
get => materialCollection;
set
{
OnPropertyChanged(value, materialCollection);
OnPropertyChanged(nameof(IsNotConcrete));
OnPropertyChanged(nameof(RowHeight));
}
}
public bool IsNotConcrete => MaterialCollection.Name != "Бетон";
private string materialClass;
private double youngModulus, compressiveStrengthCoef, tensileStrengthCoef, materialCoefInCompress, materialCoefInTension;
public string MaterialClass
{
get => materialClass;
set => OnPropertyChanged(value, ref materialClass);
}
public double YoungModulus
{
get => youngModulus;
set => OnPropertyChanged(value, ref youngModulus);
}
public double CompressiveStrengthCoef
{
get => compressiveStrengthCoef;
set => OnPropertyChanged(value, ref compressiveStrengthCoef);
}
public double TensileStrengthCoef
{
get => tensileStrengthCoef;
set => OnPropertyChanged(value, ref tensileStrengthCoef);
}
public double MaterialCoefInCompress
{
get => materialCoefInCompress;
set => OnPropertyChanged(value, ref materialCoefInCompress);
}
public double MaterialCoefInTension
{
get => materialCoefInTension;
set => OnPropertyChanged(value, ref materialCoefInTension);
}
public int RowHeight => IsNotConcrete ? 40 : 0;
public ICommand AddMaterial { get; }
public AddMaterialViewModel() { }
public AddMaterialViewModel(MaterialCatalogModel model, AddMaterialView view, MaterialCatalogViewModel materialCatalogViewModel)
{
this.model = model;
this.view = view;
this.materialCatalogViewModel = materialCatalogViewModel;
Materials = new ObservableCollection<NamedList<MaterialDefinitionBase>>(model.Materials);
MaterialCollection = Materials.First();
AddMaterial = new RelayCommand(o =>
{
if (MaterialCollection.Name == "Бетон")
this.materialCatalogViewModel.ConcreteDefinitions.Add(new ConcreteDefinition(MaterialClass, 0, CompressiveStrengthCoef, TensileStrengthCoef, MaterialCoefInCompress, MaterialCoefInTension));
if (MaterialCollection.Name == "Арматура")
this.materialCatalogViewModel.RebarDefinitions.Add(new RebarDefinition(MaterialClass, YoungModulus, CompressiveStrengthCoef, TensileStrengthCoef, MaterialCoefInCompress, MaterialCoefInTension));
});
}
}
}