public void Handle(SelectedSPDFileEvent e) { var spd = SPD.Parse(File.ReadAllBytes(e.FilePath)); if (spd == null) { MessageBox.Show("Invalid SPD file", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { SPD = spd; xmpVm1.IsEnabled = SPD.XMP1Enabled; SPD.Bind(x => x.XMP1Enabled, (s, args) => xmpVm1.IsEnabled = args.NewValue); xmpVm1.Profile = SPD.XMP1; for (int i = 0; i < xmpVm1.CLSupported.Count; ++i) { xmpVm1.CLSupported[i] = xmpVm1.Profile.IsCLSupported(i); } xmpVm2.IsEnabled = SPD.XMP2Enabled; SPD.Bind(x => x.XMP2Enabled, (s, args) => xmpVm2.IsEnabled = args.NewValue); xmpVm2.Profile = SPD.XMP2; for (int i = 0; i < xmpVm2.CLSupported.Count; ++i) { xmpVm2.CLSupported[i] = xmpVm2.Profile.IsCLSupported(i); } BindNotifyPropertyChanged(xmpVm1); BindNotifyPropertyChanged(xmpVm2); FilePath = e.FilePath; FileName = Path.GetFileName(FilePath); } }