private void InitializeCommands() { AddBreakpointCommand = new DelegateCommand( obj => { Debugger.AddBreak(DiagramEditor.SelectedElement.SelectedSocket); Changed.SafeInvoke(); }, obj => SafeCheckDebugger((d, s) => !d.IsBreak(s))); RemoveBreakpointCommand = new DelegateCommand( obj => { Debugger.RemoveBreak(DiagramEditor.SelectedElement.SelectedSocket); Changed.SafeInvoke(); }, obj => SafeCheckDebugger((d, s) => d.IsBreak(s))); StepNextCommand = new DelegateCommand( obj => Debugger.StepNext(), obj => Debugger != null && Debugger.IsWaiting); StepIntoCommand = new DelegateCommand( obj => Debugger.StepInto(DiagramEditor?.SelectedElement as CompositionDiagramElement), obj => (Debugger != null && Debugger.IsWaitingOnInput && Debugger.CanStepInto) || DiagramEditor?.SelectedElement is CompositionDiagramElement); StepOutCommand = new DelegateCommand( obj => Debugger.StepOut(DiagramEditor.Composition), obj => Debugger != null && Debugger.CanStepOut); ContinueCommand = new DelegateCommand( obj => Debugger.Continue(), obj => Debugger != null && Debugger.IsWaiting); }