예제 #1
0
        // после загрузки окна
        private void DishPopup_Loaded(object sender, RoutedEventArgs e)
        {
            AppLib.WriteAppAction("DishPopup|Загружено окно DishPopup (Loaded)");

            // обновить ListBox-ы, если есть выбранные ингредиенты и рекомендации
            if (_currentDish.SelectedIngredients != null)
            {
                foreach (DishAdding item in _currentDish.SelectedIngredients.ToList())
                {
                    listIngredients.SelectedItems.Add(item);
                }
            }
            if (_currentDish.SelectedRecommends != null)
            {
                foreach (DishItem item in _currentDish.SelectedRecommends.ToList())
                {
                    listRecommends.SelectedItems.Add(item);
                }
            }

            // размеры изображения блюда
            Rectangle dishImage = (AppLib.FindVisualChildren <Rectangle>(gridMain)).FirstOrDefault(r => r.Name == "dishImage");

            if (dishImage == null)
            {
                return;
            }
            double dishImageHeight       = dishImage.ActualHeight;
            double dishImageWidth        = dishImage.ActualWidth;
            double dishImageCornerRadius = dishImage.RadiusX;
            // объект перемещения
            // размеры прямоугольника и углы закругления для изображения и описания блюда берем из разметки
            RectangleGeometry rGeom = (animImage.Data as RectangleGeometry);

            rGeom.Rect    = new Rect(0, 0, dishImageWidth, dishImageHeight);
            rGeom.RadiusX = dishImageCornerRadius;
            rGeom.RadiusY = dishImageCornerRadius;
            Canvas.SetLeft(canvasDish, -dishImageWidth / 2d);
            Canvas.SetTop(canvasDish, -dishImageHeight / 2d);

            //   конечный элемент анимации выбора блюда, это Point3 в BezierSegment
            Border brdMakeOrder = ((MainWindow)Application.Current.MainWindow).brdMakeOrder;
            Point  toBasePoint  = brdMakeOrder.PointToScreen(new Point(0, 0));
            Size   toSize       = brdMakeOrder.RenderSize;
            Point  endPoint     = new Point(toBasePoint.X + toSize.Width / 2.0, toBasePoint.Y + toSize.Height / 2.0);

            if (AppLib.ScreenScale != 1d)
            {
                endPoint = PointFromScreen(endPoint);
            }
            // установить для сегмента анимации конечную точку
            PathFigure    pf = (animPath.Data as PathGeometry).Figures[0];
            BezierSegment bs = (pf.Segments[0] as BezierSegment);

            bs.Point3 = endPoint;

            createDishSelectStoryBoard();
        }
예제 #2
0
        // выделить/снять выделение с ингредиента или рекоменд.блюда
        private void changeViewAdding(ListBox listBox, SelectionChangedEventArgs e)
        {
            TextBlock tbText;
            Viewbox   vBox;

            // снять выделение
            foreach (var item in e.RemovedItems)
            {
                ListBoxItem vRemoved = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item);
                _tbList           = AppLib.FindVisualChildren <TextBlock>(vRemoved).ToList();
                _vbList           = AppLib.FindVisualChildren <Viewbox>(vRemoved).ToList();
                tbText            = _tbList.Find(t => t.Name == "txtName");
                tbText.Foreground = _notSelTextColor;
                vBox            = _vbList.Find(v => v.Name == "garnBaseColorBrush");
                vBox.Visibility = Visibility.Hidden;

                // записать в лог снятие выделения добавки
                if (listBox.Equals(listIngredients))
                {
                    AppLib.WriteAppAction("DishPopup|Снято выделение с ингредиента '" + (vRemoved.Content as DishAdding).langNames["ru"] + "'");
                }
                else
                {
                    AppLib.WriteAppAction("DishPopup|Снято выделение с рекоменд.блюда '" + (vRemoved.Content as DishItem).langNames["ru"] + "'");
                }
            }

            // выделение добавки
            foreach (var item in e.AddedItems)
            {
                ListBoxItem vAdded = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item);
                _tbList           = AppLib.FindVisualChildren <TextBlock>(vAdded).ToList();
                _vbList           = AppLib.FindVisualChildren <Viewbox>(vAdded).ToList();
                tbText            = _tbList.Find(t => t.Name == "txtName");
                tbText.Foreground = _selTextColor;
                vBox            = _vbList.Find(v => v.Name == "garnBaseColorBrush");
                vBox.Visibility = Visibility.Visible;

                // записать в лог выделение добавки
                if (listBox.Equals(listIngredients))
                {
                    AppLib.WriteAppAction("DishPopup|Выделен ингредиент '" + (vAdded.Content as DishAdding).langNames["ru"] + "'");
                }
                else
                {
                    AppLib.WriteAppAction("DishPopup|Выделено рекоменд.блюдо '" + (vAdded.Content as DishItem).langNames["ru"] + "'");
                }
            }
        }
예제 #3
0
        private void updatePriceControls()
        {
            var container = lstDishes.ItemContainerGenerator.ContainerFromIndex(lstDishes.SelectedIndex) as FrameworkElement;

            if (container != null)
            {
                ContentPresenter queueListBoxItemCP = AppLib.FindVisualChildren <ContentPresenter>(container).First();
                if (queueListBoxItemCP != null)
                {
                    DataTemplate dataTemplate = queueListBoxItemCP.ContentTemplate;
                    TextBlock    txtDishCount = (TextBlock)dataTemplate.FindName("txtDishCount", queueListBoxItemCP);
                    TextBlock    txtDishPrice = (TextBlock)dataTemplate.FindName("txtDishPrice", queueListBoxItemCP);

                    BindingExpression be = txtDishCount.GetBindingExpression(TextBlock.TextProperty);
                    be.UpdateTarget();
                    be = txtDishPrice.GetBindingExpression(TextBlock.TextProperty);
                    be.UpdateTarget();

                    updatePriceOrder();
                }
            }
        }  // updatePriceControl()