コード例 #1
0
        /// <summary>
        /// Swaps to the customization screen of the chosen item.
        /// </summary>
        /// <param name="sender">The button that was clicked</param>
        /// <param name="e">The event arguments.</param>
        private void CustomizeItemClicked(object sender, RoutedEventArgs e)
        {
            if (sender is Button b)
            {
                if (DataContext is Combo combo)
                {
                    IMenuScreen menu = this.GetParent <ItemCustomization>();
                    if (menu == null)
                    {
                        menu = this.GetParent <ItemModification>();
                    }

                    ItemModification modifier = new ItemModification();

                    IOrderItem item = combo.Entree;
                    if ((string)b.Tag == "1")
                    {
                        item = combo.Drink;
                    }
                    else if ((string)b.Tag == "2")
                    {
                        item = combo.Side;
                    }

                    CustomizationScreen screen = Helper.GetCustomizationScreen(item, out string text);
                    modifier.customizeItemLabel.Text = text;

                    screen.DataContext = item;
                    modifier.customizationContainer.Child = screen;
                    modifier.ReturnScreen = menu as UserControl;

                    menu.OrderComponent.ChangeScreen(modifier);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Creates a new custom customizer component with the given <typeparamref name="TOrderItem"/>
        /// and <typeparamref name="TCustomizationOptions"/>, and it
        /// swaps the order screen to show this new customization component with the <paramref name="name"/>
        /// as the title.
        /// </summary>
        /// <typeparam name="TOrderItem">The type of item to create.</typeparam>
        /// <typeparam name="TCustomizationOptions">The customization page to use to create it.</typeparam>
        /// <param name="name">The name of the menu item.</param>
        private void ChangeToItem <TOrderItem, TCustomizationOptions>(string name) where TOrderItem : IOrderItem, new() where TCustomizationOptions : CustomizationScreen, new()
        {
            if (DataContext is Combo combo)
            {
                ItemModification modifier = new ItemModification();
                modifier.customizeItemLabel.Text = "Customize " + name;
                TCustomizationOptions customizationOptions = new TCustomizationOptions();
                TOrderItem            item = new TOrderItem();
                customizationOptions.DataContext      = item;
                modifier.customizationContainer.Child = customizationOptions;
                modifier.ReturnScreen = ReturnScreen;

                if (item is Entree entree)
                {
                    combo.Entree = entree;
                }
                else if (item is Drink drink)
                {
                    combo.Drink = drink;
                }
                else if (item is Side side)
                {
                    combo.Side = side;
                }

                OrderComponent.ChangeScreen(modifier);
            }
            else if (OrderComponent.DataContext is Order order)
            {
                ItemCustomization customizer = new ItemCustomization();
                customizer.customizeItemLabel.Text = "Customize " + name;
                TCustomizationOptions customizationOptions = new TCustomizationOptions();
                TOrderItem            item = new TOrderItem();
                customizationOptions.DataContext        = item;
                customizer.customizationContainer.Child = customizationOptions;
                OrderComponent.ChangeScreen(customizer);

                order.Add(item);
            }
        }