/// <summary> /// get next height of element /// </summary> /// <param name="_height">current height</param> /// <param name="_mode">center mode</param> /// <param name="_element">element</param> /// <param name="_padding">padding</param> /// <returns>next height</returns> private int getNextHeight(int _height, UIPlacerMode _mode, FrameworkElement _element, int _padding = 0) { if (_mode == UIPlacerMode.top || _mode == UIPlacerMode.center) { return(_height + (int)_element.Height + _padding); } return(_height - (int)_element.Height - _padding); }
/// <summary> /// center ui /// </summary> /// <param name="_mode">center mode</param> /// <param name="_padding">padding</param> /// <param name="_elements">element to center</param> public void Center(UIPlacerMode _mode, int _padding, params FrameworkElement[] _elements) { int startHeight = _mode == UIPlacerMode.top ? ((int)_elements[0].Height) / 2 + _padding : _mode == UIPlacerMode.center ? MainWindow.SCREEN_HEIGHT / 2 - getTotalHeight(_elements, _padding) / 2 : MainWindow.SCREEN_HEIGHT - (int)_elements[0].Height / 2 - _padding; int startWidth = MainWindow.SCREEN_WIDTH / 2; for (int i = 0; i < _elements.Length; i++) { Thickness th = new Thickness((startWidth - (_elements[i].Width / 2)) - this.Margin.Left, startHeight - this.Margin.Top, 0, 0); _elements[i].Margin = th; startHeight = getNextHeight(startHeight, _mode, _elements[i], _padding); } }