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;
 }