public BoardAreaViewModel(BoardArea boardArea) { BoardArea = boardArea; this.WhenAnyValue(vm => vm.PartNumberLength, vm => vm.SerialNumberLength, vm => vm.ProductNameLength, vm => vm.ManuNameLength, vm => vm.FruFileIDLength) .Subscribe(x => { int length = (x.Item1 + x.Item2 + x.Item3 + x.Item4 + x.Item5 + 5 + 6 + 1); BoardArea.padding = (8 - (length % 8)); Length = length + BoardArea.padding; // add padding to length }); this.WhenAnyValue(vm => vm.ManufacturerDateTime).Subscribe(mdt => { ManufacturerTime = (int)(mdt.ToUniversalTime() - Hel.timeStartOffset).TotalMinutes; }); this.WhenAnyValue(vm => vm.ManuName, vm => vm.ManuNameType).Subscribe(name => { ManuNameLength = ManuName.Length; }); this.WhenAnyValue(vm => vm.ProductName, vm => vm.ProductNameType).Subscribe(name => { ProductNameLength = ProductName.Length; }); this.WhenAnyValue(vm => vm.PartNumber, vm => vm.PartNumberType).Subscribe(name => { PartNumberLength = PartNumber.Length; }); this.WhenAnyValue(vm => vm.SerialNumber, vm => vm.SerialNumberType).Subscribe(name => { SerialNumberLength = SerialNumber.Length; }); this.WhenAnyValue(vm => vm.FruFileID, vm => vm.FruFileIDType).Subscribe(name => { FruFileIDLength = FruFileID.Length; }); var ob1 = this.WhenAnyValue(vm => vm.PartNumber, vm => vm.SerialNumber, vm => vm.ProductName, vm => vm.ManuName, vm => vm.FruFileID); var ob2 = this.WhenAnyValue(vm => vm.ManufacturerTime, vm => vm.ManuNameType, vm => vm.SerialNumberType, vm => vm.ProductNameType, vm => vm.FruFileIDType, vm => vm.PartNumberType); ob1.CombineLatest(ob2).Subscribe(_ => { var b = BoardArea.GetBoardAreaBytes(); Checksum = b.Last(); Bytes = BitConverter.ToString(b.ToArray()); }); GenerateBytes = ReactiveCommand.Create(BoardArea.GetBoardAreaBytes, Observable.Return(true)); GenerateBytes.Subscribe(result => { Debug.WriteLine(result); Bytes = "0x" + BitConverter.ToString(result.ToArray()).Replace("-", " 0x"); }); Bytes = "hello"; }