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; }
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); }
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; }
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; }