void SetConfigurationMenu(MainWindowViewModel viewModel) { ConfigurationContextMenu.Items.Clear(); foreach (var item in viewModel.Configrations) { ConfigurationContextMenu.Items.Add(new MenuItem { FontSize = 12, Header = item.Item1, Command = item.Item2 }); } ConfigurationContextMenu.Items.Add(new Separator()); var saveCommand = new ReactiveCommand(); saveCommand.Subscribe(_ => { var dialog = new Microsoft.Win32.SaveFileDialog(); dialog.FilterIndex = 1; dialog.Filter = "JSON Configuration|*.json"; dialog.InitialDirectory = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "configuration"); if (dialog.ShowDialog() == true) { var fName = dialog.FileName; if (!fName.EndsWith(".json")) fName = fName + ".json"; viewModel.SaveCurrentConfiguration(fName); viewModel.LoadConfigurations(); SetConfigurationMenu(viewModel); // reset } }); ConfigurationContextMenu.Items.Add(new MenuItem { FontSize = 12, Header = "Save...", Command = saveCommand }); }
public MainWindow(MainWindowViewModel viewModel) { InitializeComponent(); this.DataContext = viewModel; SetConfigurationMenu(viewModel); LogText.TextChanged += (sender, e) => { LogText.ScrollToEnd(); }; KeyDown += (sender, e) => { if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.W) { this.Close(); } }; openingWindows.Add(this); }