private void UpdateControlFields(GnosisContentController controller) { lblField.Content = controller.ControlImplementation.GnosisName; Binding bdCellSpan = new Binding(); bdCellSpan.Mode = BindingMode.TwoWay; bdCellSpan.Path = new PropertyPath("TextLength"); bdCellSpan.Source = controller; txtTextLength.SetBinding(TextBox.TextProperty, bdCellSpan); Binding bdOrder = new Binding(); bdOrder.Mode = BindingMode.TwoWay; bdOrder.Path = new PropertyPath("Order"); bdOrder.Source = controller; txtFieldOrder.SetBinding(TextBox.TextProperty, bdOrder); //Binding bdMinRows = new Binding(); //bdMinRows.Mode = BindingMode.TwoWay; //bdMinRows.Path = new PropertyPath("MinRows"); //bdMinRows.Source = controller; //txtMinRows.SetBinding(TextBox.TextProperty, bdMinRows); //Binding bdMaxRows = new Binding(); //bdMaxRows.Mode = BindingMode.TwoWay; //bdMaxRows.Path = new PropertyPath("MaxRows"); //bdMaxRows.Source = controller; //txtMaxRows.SetBinding(TextBox.TextProperty, bdMaxRows); //Binding bdMinColumns = new Binding(); //bdMinColumns.Mode = BindingMode.TwoWay; //bdMinColumns.Path = new PropertyPath("MinColumns"); //bdMinColumns.Source = controller; //txtMinColumns.SetBinding(TextBox.TextProperty, bdMinColumns); //Binding bdMaxColumns = new Binding(); //bdMaxColumns.Mode = BindingMode.TwoWay; //bdMaxColumns.Path = new PropertyPath("MaxColumns"); //bdMaxColumns.Source = controller; //txtMaxColumns.SetBinding(TextBox.TextProperty, bdMaxColumns); //Binding bdPlacementPriority = new Binding(); //bdPlacementPriority.Mode = BindingMode.TwoWay; //bdPlacementPriority.Path = new PropertyPath("PlacementPriorityDown"); //bdPlacementPriority.Source = controller; //chkPlacementPriorityDown.SetBinding(CheckBox.IsCheckedProperty, bdPlacementPriority); }
private bool ResizeChild(GnosisContentController child, double colWidth, bool widthIncreased) { double minFieldWidth = child.MinFieldWidth; double maxFieldWidth = child.MaxFieldWidth; double displayWidth = (colWidth * child.ColSpan) - (2 * ((IGnosisMarginPossessor)child.ControlImplementation).HorizontalMargin); if (child.ControlImplementation is IGnosisCaptionLabelPossessor) { if (captionPosition == CaptionPosition.LEFT || captionPosition == CaptionPosition.RIGHT) { GnosisCaptionLabel captionLabel = ((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel; double captionWidth = captionLabel.GetWidth() + (2 * captionLabel.HorizontalMargin) + captionLabel.CaptionSpacing; displayWidth = displayWidth - captionWidth; } } if (child.ColNo != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0) { displayWidth -= ((GnosisPanel)ControlImplementation).HorizontalSpacing; } //if (child.MaxDisplayChars == 0) //{ // //((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth); //} if (displayWidth > maxFieldWidth) { if (displayWidth - maxFieldWidth > colWidth) { //need to decrease col span return(true); } ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(maxFieldWidth); if (child is GnosisTextFieldController) { ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false); } } else if (displayWidth > minFieldWidth) { if (displayWidth - minFieldWidth > colWidth) { //need to decrease col span return(true); } ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth); //set text fields to single line if (child is GnosisTextFieldController) { ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false); ((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(child.FieldHeight); ((GnosisTextFieldController)child).NumLines = 1; //int row = ((IGnosisTextFieldImplementation)child.ControlImplementation).GetRowNumber(); //((IGnosisPanelImplementation)ControlImplementation).SetRowFixedHeight(row, fieldRowHeight); } } else if (displayWidth < minFieldWidth) { if (child.ColSpan < numCols) { //colspan must increase, which requires a layout change return(true); } else { ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth); if (child is GnosisTextFieldController) { int charsPerLine = (int)Math.Floor(displayWidth / child.CharacterWidth); int numChars = charsPerLine * ((GnosisTextFieldController)child).NumLines; if (numChars < child.MinDisplayChars) { int difference = child.MinDisplayChars - numChars; int numLinesNeeded = (int)Math.Ceiling((double)difference / charsPerLine); int totalLines = ((GnosisTextFieldController)child).NumLines + numLinesNeeded; ((GnosisTextFieldController)child).NumLines = totalLines; double newHeight = ((GnosisTextFieldController)child).TextHeight * totalLines + (((GnosisTextField)child.ControlImplementation).VerticalPadding * 2); ((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(newHeight); if (totalLines > 1) { ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(true); } else { ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false); } } // double minArea = minFieldWidth * child.FieldHeight; //double oneLineArea = displayWidth * child.FieldHeight; //int numLines = (int)Math.Ceiling(minArea / oneLineArea); //((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(numLines * child.FieldHeight); ////int row = ((IGnosisTextFieldImplementation)child.ControlImplementation).GetRowNumber(); ////((IGnosisPanelImplementation)ControlImplementation).SetRowFixedHeight(row, numLines * child.FieldHeight); //if (numLines > 1) //{ // ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(true); //} //else //{ // ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false); //} } } } return(false); //layout has not changed }