public async Task <DialogResult> RequestDialog(IControlConfigurationViewModel ViewModel) { var window = new TuningWindow(ViewModel) { Owner = Application.Current.MainWindow }; var windowClosed = Observable.FromEventPattern(h => window.Closed += h, h => window.Closed -= h); var resultAwaiter = ViewModel.Result .Merge(windowClosed.Select(_ => DialogResult.Cancelled)) .FirstAsync() .ToTask(); window.Show(); try { var result = await resultAwaiter; return(result); } finally { window.Close(); } }
public TuningWindow(IControlConfigurationViewModel ViewModel) { DataContext = ViewModel; InitializeComponent(); }