public ProgressRateSampleControl() { InitializeComponent(); var dataContext = new ProgressRateSampleControlViewModel(); // Open a progress window whenever a task is executed. dataContext.TaskStarted += (sender, e) => { var task = e.Item1; var cancellationTokenSource = e.Item2; var progress = e.Item3; var owner = Window.GetWindow(this); var progressWindow = new ProgressWindowContext() { Task = task, CancellationTokenSource = cancellationTokenSource, Owner = owner, Title = "ProgressRate Sample", Content = "Wait 5 seconds...", }; progressWindow.ProgressRate = 0.0; progress.ProgressChanged += (_, rate) => { progressWindow.ProgressRate = rate; }; progressWindow.ShowDialog(); }; DataContext = dataContext; }
void runButton_Click(object sender, RoutedEventArgs e) { // Create and start a new task which just suspends 5 seconds. var task = RunAsync(); var progressWindow = new ProgressWindowContext() { Owner = Window.GetWindow(this), Task = task, }; progressWindow.ShowDialog(); }