// после загрузки окна 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(); }
// выделить/снять выделение с ингредиента или рекоменд.блюда 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"] + "'"); } } }
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()