private void EvaluateCanMoveNext() { if (Prompts.Count != 0) { var newCanMoveNext = Prompts.IndexOf(SelectedPrompt) == Prompts.Count - 1 ? false : true; if (newCanMoveNext != _canMoveNext) { _canMoveNext = newCanMoveNext; MoveNext.RaiseCanExecuteChanged(); } } }
private void UserControl_KeyDown(object sender, KeyEventArgs e) { if (KeyValidator.IsUpKey(e.Key)) { e.Handled = true; MoveUp?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsDownKey(e.Key)) { e.Handled = true; MoveDown?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsLeftKey(e.Key)) { e.Handled = true; MoveLeft?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsRightKey(e.Key)) { e.Handled = true; MoveRight?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsPageDownKey(e.Key)) { e.Handled = true; MovePageDown?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsPageUpKey(e.Key)) { e.Handled = true; MovePageUp?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsDeleteKey(e.Key)) { if (!ReadOnlyMode) { e.Handled = true; ByteDeleted?.Invoke(this, new EventArgs()); return; } } else if (KeyValidator.IsBackspaceKey(e.Key)) { e.Handled = true; ByteDeleted?.Invoke(this, new EventArgs()); MovePrevious?.Invoke(this, new EventArgs()); return; } else if (KeyValidator.IsEscapeKey(e.Key)) { e.Handled = true; EscapeKey?.Invoke(this, new EventArgs()); return; } //MODIFY BYTE if (!ReadOnlyMode) { if (KeyValidator.IsHexKey(e.Key)) { string key; if (KeyValidator.IsNumericKey(e.Key)) { key = KeyValidator.GetDigitFromKey(e.Key).ToString(); } else { key = e.Key.ToString().ToLower(); } switch (_keyDownLabel) { case KeyDownLabel.FirstChar: FirstHexChar.Content = key; _keyDownLabel = KeyDownLabel.SecondChar; Action = ByteAction.Modified; Byte = ByteConverters.HexToByte(FirstHexChar.Content.ToString() + SecondHexChar.Content.ToString())[0]; break; case KeyDownLabel.SecondChar: SecondHexChar.Content = key; _keyDownLabel = KeyDownLabel.NextPosition; Action = ByteAction.Modified; Byte = ByteConverters.HexToByte(FirstHexChar.Content.ToString() + SecondHexChar.Content.ToString())[0]; //Move focus event MoveNext?.Invoke(this, new EventArgs()); break; } } } }
public static IEnumerable <T> GetNotifyingEnumerable <T>(IEnumerable <T> enumerable, MoveNext <T> notify) { foreach (var item in enumerable) { if (notify != null) { notify(true, item); } yield return(item); } if (notify != null) { notify(false, default(T)); } }