private void ArchiveOnClick(object sender, RoutedEventArgs e) { ChooseNameWindow chooseNameWindow = new ChooseNameWindow("Archive name"); if ((bool)chooseNameWindow.ShowDialog()) { string destination = Path.Combine(_isFirstFocused ? FirstPanelPath.Text : SecondPanelPath.Text, chooseNameWindow.NewName) + ".zip"; OperationWindow operationWindow = new OperationWindow("Archiving"); operationWindow.OnFinish += (o, args) => { operationWindow.Close(); UpdatePanels(); }; List <Item> items = (_isFirstFocused ? FirstPanel : SecondPanel).Items.Cast <Item>() .Where(item => item.IsChecked).ToList(); if (items.Count < 1) { return; } operationWindow.Show(); operationWindow.Archive(items[0], destination); } }