void Redraw() { ItemList.Items.Clear(); InventoryList.Items.Clear(); foreach (var item in Database.Items) { var node = new TreeViewItem() { Header = $"{item.Type}: {item.Properties["m_id"]}" }; node.MouseDoubleClick += async(sender, args) => { int index = Database.Items.IndexOf(item); Database.Items[index] = await ItemEditor.OpenItem(item); UpdateStatusBar("Updated item"); Redraw(); }; node.MouseRightButtonUp += (sender, args) => { ContextMenu menu = new ContextMenu(); var deleteBtn = new MenuItem(); deleteBtn.Header = "Remove Selected"; deleteBtn.Click += (o, args1) => { Database.Items.Remove(item); Redraw(); }; menu.Items.Add(deleteBtn); menu.Placement = PlacementMode.MousePoint; menu.IsOpen = true; }; ItemList.Items.Add(node); } foreach (var item in Database.Inventories) { var node = new TreeViewItem() { Header = $"{item.m_owner}: {item.m_id}" }; node.MouseDoubleClick += async(sender, args) => { int index = Database.Inventories.IndexOf(item); Database.Inventories[index] = await Windows.InventoryEditor.GetInventory(item); UpdateStatusBar("Updated item"); Redraw(); }; node.MouseRightButtonUp += (sender, args) => { ContextMenu menu = new ContextMenu(); var deleteBtn = new MenuItem(); deleteBtn.Header = "Remove Selected"; deleteBtn.Click += (o, args1) => { Database.Inventories.Remove(item); Redraw(); }; menu.Items.Add(deleteBtn); menu.Placement = PlacementMode.MousePoint; menu.IsOpen = true; }; InventoryList.Items.Add(node); } }