public BlockFlyoutPage(string hash, Networks network) { if (string.IsNullOrWhiteSpace(hash)) { throw new ArgumentNullException(nameof(hash)); } _hash = hash.FromHexString(); _network = network; _viewModel = new BlockFlyoutViewModel(); DataContext = _viewModel; Loaded += Load; Unloaded += Unload; InitializeComponent(); }
private void Init() { _viewModel = new BlockFlyoutViewModel(); _viewModel.OpenTransactionEvt += OpenTransaction; DataContext = _viewModel; var rpcClient = new RpcClient(_network); rpcClient.GetBlock(_hash).ContinueWith((r) => { try { var block = r.Result; if (block == null) { return; } if (block.Transactions != null && !block.Transactions.Any()) { return; } Application.Current.Dispatcher.Invoke(() => { _viewModel.Transactions.Clear(); foreach (var tx in block.Transactions) { var txId = tx.GetTxId().ToHexString(); var monetaryTransaction = tx as BcBaseTransaction; var record = new BlockTransactionViewModel { TxId = txId, IsCoinBase = tx is CoinbaseTransaction, Value = monetaryTransaction == null ? 0 : monetaryTransaction.TransactionOut.Sum(t => t.Value), NbTransactionsOut = monetaryTransaction == null ? 0 : monetaryTransaction.TransactionOut.Count() }; _viewModel.Transactions.Add(record); } }); } catch (AggregateException ex) { } }); }
private void Unload(object sender, RoutedEventArgs e) { _viewModel.OpenTransactionEvt -= OpenTransaction; _viewModel = null; }