public WindingCalculationPage(WindingViewModel viewModel)
        {
            windingViewModel = viewModel;

            var controlsGrid = new Grid
            {
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    }
                },
                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    }
                },
            };

            #region Entries

            var controlsColor = (Color)App.Current.Resources["controlsColor"];

            //windingStepNumEntry
            var windingStepNumEntry = new NumEntryControllable()
            {
                EntryTextColor          = controlsColor,
                Caption                 = "ШАГ ОБМОТКИ, ММ",
                BindingContext          = windingViewModel,
                OnlyIntegerNumbersInput = true
            };
            windingStepNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(windingViewModel.WindingStep), BindingMode.TwoWay);
            windingStepNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(windingViewModel.WindingStepMaxValue), BindingMode.OneWay);
            windingStepNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(windingViewModel.WindingStepMinValue), BindingMode.OneWay);
            windingStepNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(windingViewModel.WindingStepOffset), BindingMode.OneWay);
            controlsGrid.Children.Add(windingStepNumEntry, 0, 0);

            //coreDiameterNumEntry
            var coreDiameterNumEntry = new NumEntryControllable()
            {
                EntryTextColor = controlsColor,
                Caption        = "Ø ЗАГОТОВКИ",
                BindingContext = windingViewModel
            };
            coreDiameterNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(windingViewModel.WindingCoreDiameter), BindingMode.TwoWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(windingViewModel.WindingCoreDiameterMaxValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(windingViewModel.WindingCoreDiameterMinValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(windingViewModel.WindingCoreDiameterOffset), BindingMode.OneWay);
            controlsGrid.Children.Add(coreDiameterNumEntry, 0, 1);

            #endregion

            #region Labels

            //tapeOverlapLabel
            var tapeOverlapLabel   = new Label();
            var tapeOverlapBinding = new Binding
            {
                Source       = windingViewModel,
                Path         = nameof(windingViewModel.Overlap),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} %"
            };
            tapeOverlapLabel.SetBinding(Label.TextProperty, tapeOverlapBinding);

            //windingAngleLabel
            var windingAngleLabel   = new Label();
            var windingAngleBinding = new Binding
            {
                Source       = windingViewModel,
                Path         = nameof(windingViewModel.WindingAngle),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} °"
            };
            windingAngleLabel.SetBinding(Label.TextProperty, windingAngleBinding);

            //tapeExpenseKilometresLabel
            var tapeExpenseKilometresLabel   = new Label();
            var tapeExpenseKilometresBinding = new Binding
            {
                Source       = windingViewModel,
                Path         = nameof(windingViewModel.TapeExpenseKilometres),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} км"
            };
            tapeExpenseKilometresLabel.SetBinding(Label.TextProperty, tapeExpenseKilometresBinding);

            //tapeExpenseSquareMetresLabel
            var tapeExpenseSquareMetresLabel   = new Label();
            var tapeExpenseSquareMetresBinding = new Binding
            {
                Source       = windingViewModel,
                Path         = nameof(windingViewModel.TapeExpenseSquareMetres),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} м²"
            };
            tapeExpenseSquareMetresLabel.SetBinding(Label.TextProperty, tapeExpenseSquareMetresBinding);

            //tapeExpenseKilogramesLabel
            var tapeExpenseKilogramesLabel   = new Label();
            var tapeExpenseKilogramesBinding = new Binding
            {
                Source       = windingViewModel,
                Path         = nameof(windingViewModel.TapeExpenseKilogrames),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} кг/км"
            };
            tapeExpenseKilogramesLabel.SetBinding(Label.TextProperty, tapeExpenseKilogramesBinding);

            #endregion

            #region Pickers

            //tapeWidthPicker
            var tapeWidthPicker          = new Picker();
            var tapesWidthsSourceBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.TapesWidthsCollection),
                Mode   = BindingMode.OneWay,
            };
            tapeWidthPicker.SetBinding(Picker.ItemsSourceProperty, tapesWidthsSourceBinding);
            var tapeWidthBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.TapeWidth),
                Mode   = BindingMode.TwoWay
            };
            tapeWidthPicker.SetBinding(Picker.SelectedItemProperty, tapeWidthBinding);

            //tapeTypePicker
            var tapeTypePicker = new Picker {
                FontSize = 14
            };
            var tapesTypesSourceBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.TapesCollectionsNames),
                Mode   = BindingMode.OneWay
            };
            tapeTypePicker.SetBinding(Picker.ItemsSourceProperty, tapesTypesSourceBinding);
            var tapeTypeBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.CurrentTapesCollectionName),
                Mode   = BindingMode.TwoWay
            };
            tapeTypePicker.SetBinding(Picker.SelectedItemProperty, tapeTypeBinding);

            //tapeThicknessPicker
            var tapeThicknessPicker         = new Picker();
            var tapesThicknessSourceBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.CurrentTapesCollection),
                Mode   = BindingMode.OneWay
            };
            tapeThicknessPicker.SetBinding(Picker.ItemsSourceProperty, tapesThicknessSourceBinding);
            tapeThicknessPicker.ItemDisplayBinding = new Binding("Thickness", stringFormat: "{0:d}");
            var tapeThicknessBinding = new Binding
            {
                Source = windingViewModel,
                Path   = nameof(windingViewModel.CurrentTape),
                Mode   = BindingMode.TwoWay
            };
            tapeThicknessPicker.SetBinding(Picker.SelectedItemProperty, tapeThicknessBinding);
            var pickerIsEnabledBinding = new Binding
            {
                Source    = windingViewModel,
                Path      = nameof(windingViewModel.CurrentTapesCollection),
                Mode      = BindingMode.OneWay,
                Converter = new IListToBoolPickerIsEnabledConverter(),
            };
            tapeThicknessPicker.SetBinding(IsEnabledProperty, pickerIsEnabledBinding);

            #endregion

            var viewsDictionary = new Dictionary <string, View>
            {
                { "ПЕРЕКРЫТИЕ", tapeOverlapLabel },
                { "УГОЛ ОБМОТКИ", windingAngleLabel },
                { "РАСХОД ЛЕНТЫ, КМ", tapeExpenseKilometresLabel },
                { "РАСХОД ЛЕНТЫ, М²", tapeExpenseSquareMetresLabel },
                { "РАСХОД ЛЕНТЫ, КГ", tapeExpenseKilogramesLabel },
                { "ШИРИНА ЛЕНТЫ, ММ", tapeWidthPicker },
                { "ТОЛЩИНА ЛЕНТЫ, МКМ", tapeThicknessPicker },
                { "ТИП ЛЕНТЫ", tapeTypePicker }
            };

            var windingParametresGrid = new Grid
            {
                ColumnSpacing     = 30,
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(110, GridUnitType.Absolute)
                    }
                }
            };

            var rowIndex = -1;
            foreach (var pair in viewsDictionary)
            {
                windingParametresGrid.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(50, GridUnitType.Absolute)
                });
                windingParametresGrid.Children.Add(new Label {
                    Text = pair.Key, Style = (Style)App.Current.Resources["labelStyle"]
                }, 0, ++rowIndex);
                windingParametresGrid.Children.Add(pair.Value, 1, rowIndex);
                if (pair.Value is Label label)
                {
                    label.Style = (Style)App.Current.Resources["changingLabelStyle"];
                }
                if (pair.Value is Picker picker)
                {
                    picker.Style = (Style)App.Current.Resources["pickerStyle"];
                }
            }

            var absoluteLayout = new AbsoluteLayout();
            if (Device.RuntimePlatform == Device.iOS)
            {
                absoluteLayout.Padding = new Thickness(0, 30, 0, 0);
            }

            absoluteLayout.Children.Add(windingParametresGrid);
            AbsoluteLayout.SetLayoutBounds(windingParametresGrid, new Rectangle(0.5, 0, windingParametresGrid.Width, windingParametresGrid.Height));
            AbsoluteLayout.SetLayoutFlags(windingParametresGrid, AbsoluteLayoutFlags.PositionProportional);

            absoluteLayout.Children.Add(controlsGrid);
            AbsoluteLayout.SetLayoutBounds(controlsGrid, new Rectangle(0.5, 1, controlsGrid.Width, controlsGrid.Height));
            AbsoluteLayout.SetLayoutFlags(controlsGrid, AbsoluteLayoutFlags.PositionProportional);

            Content = absoluteLayout;
        }
Esempio n. 2
0
        public TwistCalculationPage(TwistViewModel viewModel)
        {
            twistViewModel = viewModel;
            painter        = new CableTwistSchemePainter()
            {
                BackgroundColor  = this.BackgroundColor,
                CurrentTwistInfo = twistViewModel.TwistInfo
            };
            var canvasView = painter.CanvasView;

            twistViewModel.QuantityElementsChanged += TwistViewModel_QuantityElementsChanged;

            var gridLayout = new Grid
            {
                Padding           = new Thickness(0),
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.FillAndExpand,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    }
                },
                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(1, GridUnitType.Star)
                    },
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    }
                }
            };

            if (Device.RuntimePlatform == Device.iOS)
            {
                gridLayout.Padding = new Thickness(0, 30, 0, 0);
            }
            Content = gridLayout;

            #region Entries

            var controlsColor = (Color)App.Current.Resources["controlsColor"];

            //twistedElementsCountNumEntry
            var twistedElementsCountNumEntry = new NumEntryControllable
            {
                EntryTextColor          = controlsColor,
                Caption                 = "КОЛИЧЕСТВО ЭЛЕМЕНТОВ СКРУТКИ",
                OnlyIntegerNumbersInput = true,
                BindingContext          = twistViewModel
            };
            twistedElementsCountNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(twistViewModel.QuantityElements), BindingMode.TwoWay);
            twistedElementsCountNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(twistViewModel.QuantityElementsMaxValue), BindingMode.OneWay);
            twistedElementsCountNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(twistViewModel.QuantityElementsMinValue), BindingMode.OneWay);
            twistedElementsCountNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(twistViewModel.QuantityElementsOffset), BindingMode.OneWay);
            gridLayout.Children.Add(twistedElementsCountNumEntry, 0, 2);

            //coreDiameterNumEntry
            var coreDiameterNumEntry = new NumEntryControllable
            {
                EntryTextColor = controlsColor,
                Caption        = "Ø ЭЛЕМЕНТА СКРУТКИ, ММ",
                BindingContext = twistViewModel
            };
            coreDiameterNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(twistViewModel.TwistedElementDiameter), BindingMode.TwoWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(twistViewModel.TwistedElementDiameterMaxValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(twistViewModel.TwistedElementDiameterMinValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(twistViewModel.TwistedElementDiameterOffset), BindingMode.OneWay);
            gridLayout.Children.Add(coreDiameterNumEntry, 0, 3);

            #endregion

            #region Labels

            //twistStepLabel
            var twistStepLabel   = new Label();
            var twistStepBinding = new Binding
            {
                Source       = twistViewModel,
                Path         = nameof(twistViewModel.TwistStep),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} мм"
            };
            twistStepLabel.SetBinding(Label.TextProperty, twistStepBinding);

            //twistCoreDiameterLabel
            var twistCoreDiameterLabel   = new Label();
            var twistCoreDiameterBinding = new Binding
            {
                Source       = twistViewModel,
                Path         = nameof(twistViewModel.TwistedCoreDiameter),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} мм"
            };
            twistCoreDiameterLabel.SetBinding(Label.TextProperty, twistCoreDiameterBinding);

            //twistSchemeLabel
            var twistSchemeLabel        = new Label();
            var twistSchemeLabelBinding = new Binding
            {
                Source = twistViewModel,
                Path   = nameof(twistViewModel.TwistScheme),
                Mode   = BindingMode.OneWay
            };
            twistSchemeLabel.SetBinding(Label.TextProperty, twistSchemeLabelBinding);

            #endregion

            #region Pickers

            var twistedElementTypePicker         = new Picker();
            var twistedElementTypesSourceBinding = new Binding
            {
                Source = twistViewModel,
                Path   = nameof(twistViewModel.TypeOfTwistCollection),
                Mode   = BindingMode.OneWay
            };
            twistedElementTypePicker.SetBinding(Picker.ItemsSourceProperty, twistedElementTypesSourceBinding);
            twistedElementTypePicker.ItemDisplayBinding = new Binding("Name");
            twistedElementTypePicker.SelectedIndex      = 0;
            var twistedElementTypeBinding = new Binding
            {
                Source = twistViewModel,
                Path   = nameof(twistViewModel.TypeOfTwist),
                Mode   = BindingMode.TwoWay
            };
            twistedElementTypePicker.SetBinding(Picker.SelectedItemProperty, twistedElementTypeBinding);

            #endregion

            var twistParametresGrid = new Grid
            {
                ColumnSpacing     = 30,
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(125, GridUnitType.Absolute)
                    }
                }
            };

            //Controls Dictionary
            var viewsDictionary = new Dictionary <string, View>
            {
                { "ШАГ СКРУТКИ, ММ", twistStepLabel },
                { "Ø ПО СКРУТКЕ, ММ", twistCoreDiameterLabel },
                { "СХЕМА СКРУТКИ", twistSchemeLabel },
                { "ТИП ЭЛЕМЕНТА", twistedElementTypePicker },
            };

            var rowIndex = -1;
            foreach (var pair in viewsDictionary)
            {
                twistParametresGrid.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(50, GridUnitType.Absolute)
                });
                twistParametresGrid.Children.Add(new Label {
                    Text = pair.Key, Style = (Style)App.Current.Resources["labelStyle"]
                }, 0, ++rowIndex);
                twistParametresGrid.Children.Add(pair.Value, 1, rowIndex);
                if (pair.Value is Label label)
                {
                    label.Style = (Style)App.Current.Resources["changingLabelStyle"];
                }
                if (pair.Value is Picker picker)
                {
                    picker.Style = (Style)App.Current.Resources["pickerStyle"];
                }
            }
            gridLayout.Children.Add(twistParametresGrid, 0, 0);

            gridLayout.Children.Add(canvasView, 0, 1);
        }
Esempio n. 3
0
        public ReelLengthsCalculationPage(ReelsLengthsViewModel viewModel)
        {
            reelsLengthsViewModel = viewModel;

            var controlsGrid = new Grid
            {
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    }
                },
                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    }
                },
            };

            #region Entries

            var controlsColor = (Color)App.Current.Resources["controlsColor"];

            //edgeClearanceNumEntry
            var edgeClearanceNumEntry = new NumEntryControllable
            {
                EntryTextColor          = controlsColor,
                Caption                 = "ДО КРАЯ БАРАБАНА, ММ",
                OnlyIntegerNumbersInput = true,
                BindingContext          = reelsLengthsViewModel
            };
            edgeClearanceNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(reelsLengthsViewModel.EdgeClearance), BindingMode.TwoWay);
            edgeClearanceNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(reelsLengthsViewModel.EdgeClearanceMaxValue), BindingMode.OneWay);
            edgeClearanceNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(reelsLengthsViewModel.EdgeClearanceMinValue), BindingMode.OneWay);
            edgeClearanceNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(reelsLengthsViewModel.EdgeClearanceOffset), BindingMode.OneWay);

            controlsGrid.Children.Add(edgeClearanceNumEntry, 0, 0);

            //coreDiameterNumEntry
            var coreDiameterNumEntry = new NumEntryControllable
            {
                EntryTextColor = controlsColor,
                Caption        = "Ø КАБЕЛЯ, ММ",
                BindingContext = reelsLengthsViewModel
            };
            coreDiameterNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(reelsLengthsViewModel.CoreDiameter), BindingMode.TwoWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(reelsLengthsViewModel.CoreDiameterMaxValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(reelsLengthsViewModel.CoreDiameterMinValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(reelsLengthsViewModel.CoreDiameterOffset), BindingMode.OneWay);

            controlsGrid.Children.Add(coreDiameterNumEntry, 0, 1);

            #endregion

            var thickness = new Thickness(0);

            var reelsListView = new ListView
            {
                Margin        = thickness,
                HasUnevenRows = true,
                ItemsSource   = reelsLengthsViewModel.ReelViewModelsList,
                ItemTemplate  = new DataTemplate(GetTemplate),
                Header        = GetHeaderRow(),
                SelectionMode = ListViewSelectionMode.None
            };

            var reelsListScrollView = new ScrollView
            {
                Margin  = thickness,
                Padding = thickness,
                Content = reelsListView,
                VerticalScrollBarVisibility = ScrollBarVisibility.Always
            };

            var frame = new Frame
            {
                Margin    = thickness,
                Padding   = thickness,
                HasShadow = true,
                Content   = reelsListScrollView
            };

            var absoluteLayout = new AbsoluteLayout();
            if (Device.RuntimePlatform == Device.iOS)
            {
                absoluteLayout.Padding = new Thickness(0, 30, 0, 0);
            }

            absoluteLayout.Children.Add(frame);
            AbsoluteLayout.SetLayoutBounds(frame, new Rectangle(0.5, 0, 1, 0.6));
            AbsoluteLayout.SetLayoutFlags(frame, AbsoluteLayoutFlags.All);

            absoluteLayout.Children.Add(controlsGrid);
            AbsoluteLayout.SetLayoutBounds(controlsGrid, new Rectangle(0.5, 1, controlsGrid.Width, controlsGrid.Height));
            AbsoluteLayout.SetLayoutFlags(controlsGrid, AbsoluteLayoutFlags.PositionProportional);

            Content = absoluteLayout;
        }
Esempio n. 4
0
        public BraidingCalculationPage(BraidingViewModel viewModel)
        {
            braidingViewModel = viewModel;

            var controlsGrid = new Grid
            {
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    }
                },
                RowDefinitions =
                {
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    },
                    new RowDefinition {
                        Height = new GridLength(0, GridUnitType.Auto)
                    }
                },
            };

            #region Entries

            var controlsColor = (Color)App.Current.Resources["controlsColor"];

            //braidingStepNumEntry
            var braidingStepNumEntry = new NumEntryControllable()
            {
                EntryTextColor          = controlsColor,
                Caption                 = "ШАГ ОПЛЕТКИ, ММ",
                BindingContext          = braidingViewModel,
                OnlyIntegerNumbersInput = true
            };
            braidingStepNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(braidingViewModel.BraidingStep), BindingMode.TwoWay);
            braidingStepNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(braidingViewModel.BraidingStepMaxValue), BindingMode.OneWay);
            braidingStepNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(braidingViewModel.BraidingStepMinValue), BindingMode.OneWay);
            braidingStepNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(braidingViewModel.BraidingStepOffset), BindingMode.OneWay);
            controlsGrid.Children.Add(braidingStepNumEntry, 0, 0);

            //coreDiameterNumEntry
            var coreDiameterNumEntry = new NumEntryControllable()
            {
                EntryTextColor = controlsColor,
                Caption        = "Ø ЗАГОТОВКИ, ММ",
                BindingContext = braidingViewModel
            };
            coreDiameterNumEntry.SetBinding(NumEntryControllable.ValueProperty, nameof(braidingViewModel.BraidingCoreDiameter), BindingMode.TwoWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MaxValueProperty, nameof(braidingViewModel.BraidingCoreDiameterMaxValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.MinValueProperty, nameof(braidingViewModel.BraidingCoreDiameterMinValue), BindingMode.OneWay);
            coreDiameterNumEntry.SetBinding(NumEntryControllable.OffsetProperty, nameof(braidingViewModel.BraidingCoreDiameterOffset), BindingMode.OneWay);
            controlsGrid.Children.Add(coreDiameterNumEntry, 0, 1);

            #endregion

            #region Labels

            //braidingDensityLable
            var braidingDensityLable   = new Label();
            var braidingDensityBinding = new Binding
            {
                Source       = braidingViewModel,
                Path         = nameof(braidingViewModel.BraidingDensity),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} %"
            };
            braidingDensityLable.SetBinding(Label.TextProperty, braidingDensityBinding);

            //braidingAngleLable
            var braidingAngleLable   = new Label();
            var braidingAngleBinding = new Binding
            {
                Source       = braidingViewModel,
                Path         = nameof(braidingViewModel.BraidingAngle),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} °"
            };
            braidingAngleLable.SetBinding(Label.TextProperty, braidingAngleBinding);

            //wiresWeightKilogramsLable
            var wiresWeightKilogramsLable   = new Label();
            var wiresWeightKilogramsBinding = new Binding
            {
                Source       = braidingViewModel,
                Path         = nameof(braidingViewModel.WiresWeight),
                Mode         = BindingMode.OneWay,
                StringFormat = "{0:F2} кг/км"
            };
            wiresWeightKilogramsLable.SetBinding(Label.TextProperty, wiresWeightKilogramsBinding);

            #endregion

            #region Pickers

            //CoilsCountPicker
            var coilsCountPicker        = new Picker();
            var CoilsCountSourceBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.CoilsCountCollection),
                Mode   = BindingMode.OneWay
            };
            coilsCountPicker.SetBinding(Picker.ItemsSourceProperty, CoilsCountSourceBinding);
            var coilsCountBinding = new Binding()
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.CoilsCount),
                Mode   = BindingMode.TwoWay
            };
            coilsCountPicker.SetBinding(Picker.SelectedItemProperty, coilsCountBinding);

            //WiresCountPicker
            var wiresCountPicker        = new Picker();
            var wiresCountSourceBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresCountCollection),
                Mode   = BindingMode.OneWay
            };
            wiresCountPicker.SetBinding(Picker.ItemsSourceProperty, wiresCountSourceBinding);
            var wiresCountBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresCount),
                Mode   = BindingMode.TwoWay
            };
            wiresCountPicker.SetBinding(Picker.SelectedItemProperty, wiresCountBinding);

            //WiresDiameterPicker
            var wiresDiameterPicker         = new Picker();
            var wiresDiametersSourceBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresDiametersCollection),
                Mode   = BindingMode.OneWay
            };
            wiresDiameterPicker.SetBinding(Picker.ItemsSourceProperty, wiresDiametersSourceBinding);
            var wiresDiameterBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresDiameter),
                Mode   = BindingMode.TwoWay
            };
            wiresDiameterPicker.SetBinding(Picker.SelectedItemProperty, wiresDiameterBinding);

            //WiresMaterialPicker
            var wiresMaterialPicker        = new Picker();
            var wiresMaterialSourceBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresMaterialsCollection),
                Mode   = BindingMode.OneWay
            };
            wiresMaterialPicker.SetBinding(Picker.ItemsSourceProperty, wiresMaterialSourceBinding);
            wiresMaterialPicker.ItemDisplayBinding = new Binding("Name");
            var wiresMaterialBinding = new Binding
            {
                Source = braidingViewModel,
                Path   = nameof(braidingViewModel.WiresMaterial),
                Mode   = BindingMode.TwoWay
            };
            wiresMaterialPicker.SetBinding(Picker.SelectedItemProperty, wiresMaterialBinding);

            #endregion

            //Controls Dictionary
            var viewsDictionary = new Dictionary <string, View>
            {
                { "ПЛОТНОСТЬ ОПЛЁТКИ", braidingDensityLable },
                { "УГОЛ ОПЛЁТКИ", braidingAngleLable },
                { "МАССА ПРОВОЛОКИ", wiresWeightKilogramsLable },
                { "ЧИСЛО КАТУШЕК", coilsCountPicker },
                { "ЧИСЛО ПРОВОЛОК", wiresCountPicker },
                { "Ø ПРОВОЛОК, ММ", wiresDiameterPicker },
                { "МАТЕРИАЛ ПРОВОЛОК", wiresMaterialPicker }
            };

            var braidingParametresGrid = new Grid
            {
                ColumnSpacing     = 30,
                RowSpacing        = 0,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Start,
                ColumnDefinitions =
                {
                    new ColumnDefinition {
                        Width = new GridLength(0, GridUnitType.Auto)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(110, GridUnitType.Absolute)
                    }
                },
            };
            var rowIndex = -1;
            foreach (var pair in viewsDictionary)
            {
                braidingParametresGrid.RowDefinitions.Add(new RowDefinition {
                    Height = new GridLength(50, GridUnitType.Absolute)
                });
                braidingParametresGrid.Children.Add(new Label {
                    Text = pair.Key, Style = (Style)App.Current.Resources["labelStyle"]
                }, 0, ++rowIndex);
                braidingParametresGrid.Children.Add(pair.Value, 1, rowIndex);
                if (pair.Value is Label label)
                {
                    label.Style = (Style)App.Current.Resources["changingLabelStyle"];
                }
                if (pair.Value is Picker picker)
                {
                    picker.Style = (Style)App.Current.Resources["pickerStyle"];
                }
            }

            var absoluteLayout = new AbsoluteLayout();
            if (Device.RuntimePlatform == Device.iOS)
            {
                absoluteLayout.Padding = new Thickness(0, 30, 0, 0);
            }

            absoluteLayout.Children.Add(braidingParametresGrid);
            AbsoluteLayout.SetLayoutBounds(braidingParametresGrid, new Rectangle(0.5, 0, braidingParametresGrid.Width, braidingParametresGrid.Height));
            AbsoluteLayout.SetLayoutFlags(braidingParametresGrid, AbsoluteLayoutFlags.PositionProportional);

            absoluteLayout.Children.Add(controlsGrid);
            AbsoluteLayout.SetLayoutBounds(controlsGrid, new Rectangle(0.5, 1, controlsGrid.Width, controlsGrid.Height));
            AbsoluteLayout.SetLayoutFlags(controlsGrid, AbsoluteLayoutFlags.PositionProportional);

            Content = absoluteLayout;
        }