} // method // просто изменить текст и кисти кнопки, если надо private void changeStateButton(int buttonIndex, OrderStatusEnum eState) { Border border = (Border)pnlStateButtons.Children[buttonIndex]; OrderStatusEnum tagStatus = OrderStatusEnum.None; // проверить статус в теге кнопки if ((border.Tag != null) && (border.Tag is OrderStatusEnum)) { tagStatus = (OrderStatusEnum)border.Tag; //if (tagStatus == eState) return; // выйти, если кнопка с таким же статусом } // если статус изменился, то поменять кисти if (tagStatus != eState) { border.Tag = eState; // получить фон и цвет шрифта Brush backgroundBrush = null, foregroundBrush = null; StateGraphHelper.SetStateButtonBrushes(eState, out backgroundBrush, out foregroundBrush); border.Background = backgroundBrush; border.SetValue(TextBlock.ForegroundProperty, foregroundBrush); } // и надписи на кнопке string btnText1, btnText2; // возврат из Готов в Приготовление bool isReturnCooking = (((_currentState == OrderStatusEnum.Ready) && (eState == OrderStatusEnum.Cooking)) || ((_currentState == OrderStatusEnum.ReadyConfirmed) && (eState == OrderStatusEnum.Cooking))); StateGraphHelper.SetStateButtonTexts(eState, out btnText1, out btnText2, (_modelType == AppViewModelEnum.Order), isReturnCooking); Grid grd = (Grid)border.Child; TextBlock tbStateName = (TextBlock)grd.Children[0], tbStateDescr = (TextBlock)grd.Children[1]; Size tbSize = new Size(border.Width, border.Height); double reqHeight = border.Height / 2d; if (tbStateName.Text != btnText1) { tbStateName.Text = btnText1; WpfHelper.AssignFontSizeByMeasureHeight(tbStateName, tbSize, reqHeight, true); } if (tbStateDescr.Text != btnText2) { tbStateDescr.Text = btnText2; WpfHelper.AssignFontSizeByMeasureHeight(tbStateDescr, tbSize, reqHeight, true); } }