public HistoryViewModel(WalletViewModel walletViewModel, IObservable <Unit> updateTrigger) { _walletViewModel = walletViewModel; _updateTrigger = updateTrigger; _transactionSourceList = new SourceList <HistoryItemViewModelBase>(); _transactions = new ObservableCollectionExtended <HistoryItemViewModelBase>(); _unfilteredTransactions = new ObservableCollectionExtended <HistoryItemViewModelBase>(); this.WhenAnyValue(x => x.UnfilteredTransactions.Count) .Subscribe(x => IsTransactionHistoryEmpty = x <= 0); _transactionSourceList .Connect() .ObserveOn(RxApp.MainThreadScheduler) .Sort(SortExpressionComparer <HistoryItemViewModelBase> .Ascending(x => x.IsConfirmed) .ThenByDescending(x => x.OrderIndex)) .Bind(_unfilteredTransactions) .Bind(_transactions) .Subscribe(); // [Column] [View] [Header] [Width] [MinWidth] [MaxWidth] [CanUserSort] // Indicators IndicatorsColumnView - Auto 80 - true // Date DateColumnView Date / Time Auto 150 - true // Labels LabelsColumnView Labels * 75 - true // Incoming IncomingColumnView Incoming (BTC) Auto 145 210 true // Outgoing OutgoingColumnView Outgoing (BTC) Auto 145 210 true // Balance BalanceColumnView Balance (BTC) Auto 145 210 true // NOTE: When changing column width or min width please also change HistoryPlaceholderPanel column widths. Source = new HierarchicalTreeDataGridSource <HistoryItemViewModelBase>(_transactions) { Columns = { // Indicators new HierarchicalExpanderColumn <HistoryItemViewModelBase>( new TemplateColumn <HistoryItemViewModelBase>( null, new FuncDataTemplate <HistoryItemViewModelBase>((node,ns) => new IndicatorsColumnView(), true), options: new ColumnOptions <HistoryItemViewModelBase> { CanUserResizeColumn = false, CanUserSortColumn = true, CompareAscending = HistoryItemViewModelBase.SortAscending(x => x.IsCoinJoin), CompareDescending = HistoryItemViewModelBase.SortDescending(x => x.IsCoinJoin), MinWidth = new GridLength(80, GridUnitType.Pixel) }, width: new GridLength(0, GridUnitType.Auto)), x => x.Children, x => { if (x is CoinJoinsHistoryItemViewModel coinJoinsHistoryItemViewModel && coinJoinsHistoryItemViewModel.CoinJoinTransactions.Count > 1) { return(true); } return(false); },
public virtual void Update(HistoryItemViewModelBase item) { OrderIndex = item.OrderIndex; Date = item.Date; DateString = item.DateString; IsConfirmed = item.IsConfirmed; }
public override void Update(HistoryItemViewModelBase item) { if (item is not CoinJoinsHistoryItemViewModel coinJoinHistoryItemViewModel) { throw new InvalidOperationException("Not the same type!"); } CoinJoinTransactions = coinJoinHistoryItemViewModel.CoinJoinTransactions; UpdateAmount(); base.Update(item); this.RaisePropertyChanged(); }
public bool IsSimilar(HistoryItemViewModelBase item) => Id == item.Id;