private void Menu_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (sender is ListBox listbox) { if (listbox.SelectedItem is ListBoxItem item) { if (item.Tag is ConsoleModel model) { if (!mConsoles.TryGetValue(model.Path, out ConsoleOperator console)) { console = new ConsoleOperator(model, mMenuModel.Clone(), this.Dispatcher); mConsoles[model.Path] = console; } this.Dispatcher.Invoke(new Action(() => { ConsoleGrid.DataContext = console.MenuModel; })); } } } }