public DataTableRow(string tagName, int index, List <DbColumnDefinition> fieldInfos, MetaDataTagItem.Data dataItem) { _fieldInfos = fieldInfos; DataItem = dataItem; TagName = tagName; Index = index; Rebuild(); }
public void Update(MetaDataTagItem.Data data, TableDefinitionModel tableDef) { if (data == null) { SelectedItemSize = 0; ByteStream = null; SelectedItemBytesLeft = 0; HasUniformByteSize = false; BackgroundBlocks.Clear(); for (int i = 0; i < Fields.Count; i++) { UpdateViewModel(Fields[i], new byte[0], 0); } return; } HasUniformByteSize = _activeMetaDataContent.SelectedTagType.DataItems.Select(x => x.Size).Distinct().Count() == 1; SelectedItemSize = data.Size; ByteStream = new MemoryStream(data.Bytes, data.Start, data.Size); BackgroundBlocks.Clear(); int counter = 0; var endIndex = tableDef.Definition.ColumnDefinitions.Count(); int index = data.Start; for (int i = 0; i < endIndex; i++) { if (i < endIndex) { var byteParserType = tableDef.Definition.ColumnDefinitions[i].Type; var parser = ByteParserFactory.Create(byteParserType); parser.TryDecode(data.Bytes, index, out _, out var bytesRead, out _); index += bytesRead; var block = new CustomBackgroundBlock() { Description = tableDef.Definition.ColumnDefinitions[i].Name, Color = counter % 2 == 0 ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Yellow), Length = bytesRead, StartOffset = index - bytesRead - data.Start, }; BackgroundBlocks.Add(block); counter++; } } SelectedItemBytesLeft = SelectedItemSize - (index - data.Start); for (int i = 0; i < Fields.Count; i++) { UpdateViewModel(Fields[i], data.Bytes, index); } }
private void ActiveMetaDataContent_SelectedTagItemChanged(MetaDataTagItem.Data newValue) { if (newValue == null) { TagVersion = 0; TagName = ""; } else { TagVersion = newValue.Version; TagName = _activeMetaDataContent.SelectedTagType.Name; } }
private void OnSelectedTagItemChanged(MetaDataTagItem.Data newValue) { Update(newValue, _tableDefinition); }