public ParityViewModel() { InputData = "123456789"; parity = new Parity(); EncodeCmd = ReactiveCommand.Create(() => { inputBytes = StringToBytes(InputData); Input = BytesToBinary(inputBytes); encodedBytes = parity.encode(inputBytes); Encoded = BytesToBinary(encodedBytes); Disturbed = Encoded; DisturbedBits = GetDisturbedBits(); this.RaisePropertyChanged(nameof(DisturbedBits)); }, this.WhenAnyValue(i => i.InputData, i => !string.IsNullOrEmpty(i) && !i.Any(x => (int)x > 127))); DecodeCmd = ReactiveCommand.Create(() => { var decoded = parity.decode(ExtractDisturbetBits()); Decoded = BytesToBinary(decoded); Stats = GetStats(); CalculateNumberOfErrors(); this.RaisePropertyChanged(nameof(Decoded)); this.RaisePropertyChanged(nameof(Stats)); }, this.WhenAnyValue(e => e.Encoded, e => !string.IsNullOrEmpty(e))); }