/// <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); } } }
/// <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); } }