private async void showProperties(object target, ExecutedRoutedEventArgs e)
        {
            var item = dataGrid.SelectedItem as ExperimentStatusViewModel;

            if (item == null)
            {
                return;
            }

            var handle = uiService.StartIndicateLongOperation("Loading properties of the experiment...");

            try
            {
                var vm = await managerVm.BuildProperties(item.ID);

                System.ComponentModel.PropertyChangedEventHandler onPropertyChanded = (s, args) =>
                {
                    try
                    {
                        if (args.PropertyName == nameof(vm.Status))
                        {
                            item.NewStatus(vm.Status);
                        }
                        else if (args.PropertyName == nameof(vm.ExecutionStatus) && vm.ExecutionStatus != null)
                        {
                            item.JobStatus = (ExperimentExecutionStateVM)vm.ExecutionStatus;
                        }
                    }
                    catch (Exception ex)
                    {
                        uiService.ShowError(ex, "Failed to refresh experiment status");
                    }
                };
                vm.PropertyChanged += onPropertyChanded;

                ExperimentProperties dlg = new ExperimentProperties();
                dlg.DataContext = vm;
                dlg.Owner       = this;
                dlg.Closed     += (s, args) =>
                {
                    vm.PropertyChanged -= onPropertyChanded;
                };

                dlg.Show();
            }
            finally
            {
                uiService.StopIndicateLongOperation(handle);
            }
        }