Implement AdvDetail skeleton files.
ADD
WalletWasabi.Gui/Controls/WalletExplorer/AdvancedDetailAttribute.cs
+using System;
+
+namespace WalletWasabi.Gui.Controls.WalletExplorer
+{
+ [AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = false)]
+ public sealed class AdvancedDetailAttribute : Attribute
+ {
+ public AdvancedDetailAttribute(string detailTitle, bool isSensitive = false)
+ {
+ DetailTitle = detailTitle;
+ IsSensitive = isSensitive;
+ }
+
+ public string DetailTitle { get; }
+ public bool IsSensitive { get; }
+ }
+}

ADD
WalletWasabi.Gui/Controls/WalletExplorer/AdvancedDetailTab.xaml.cs
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Data;
+using Avalonia.Markup.Xaml;
+using ReactiveUI;
+using System.Reactive.Linq;
+
+namespace WalletWasabi.Gui.Controls.WalletExplorer
+{
+ public class AdvancedDetailTab : UserControl
+ {
+ public AdvancedDetailTab()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+ }
+}

ADD
WalletWasabi.Gui/Controls/WalletExplorer/AdvancedDetailTabViewModel.cs
+using Avalonia.Controls;
+using Avalonia.Threading;
+using DynamicData;
+using DynamicData.Binding;
+using NBitcoin;
+using ReactiveUI;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Collections.Specialized;
+using System.Linq;
+using System.Reactive;
+using System.Reactive.Disposables;
+using System.Reactive.Linq;
+using System.Threading.Tasks;
+using WalletWasabi.Gui.Models;
+using WalletWasabi.Gui.ViewModels;
+using WalletWasabi.Logging;
+using WalletWasabi.Blockchain.TransactionOutputs;
+using WalletWasabi.Blockchain.TransactionProcessing;
+using Splat;
+
+namespace WalletWasabi.Gui.Controls.WalletExplorer
+{
+ public class AdvancedDetailTabViewModel : ViewModelBase
+ {
+ private CompositeDisposable Disposables { get; set; }
+ private Global Global { get; }
+ private ViewModelBase TargetVM { get; }
+
+ public AdvancedDetailTabViewModel(ViewModelBase targetVM)
+ {
+ Global = Locator.Current.GetService<Global>();
+ TargetVM = targetVM;
+ }
+
+ private void OnOpen()
+ {
+ Disposables = Disposables is null ?
+ new CompositeDisposable() :
+ throw new NotSupportedException($"Cannot open {GetType().Name} before closing it.");
+ }
+
+ public void OnClose()
+ {
+ // Do not dispose the RootList here. It will be reused next time when you open CoinJoinTab or SendTab.
+ Disposables?.Dispose();
+ Disposables = null;
+ }
+ }
+}
\ No newline at end of file

Implement AdvDetail skeleton files.