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();
            }
        }
Esempio n. 2
0
 public TuningWindow(IControlConfigurationViewModel ViewModel)
 {
     DataContext = ViewModel;
     InitializeComponent();
 }