using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using Avalonia.Controls; using Avalonia.Markup.Xaml; using PolyTrader.App.Avalonia.Controls; using PolyTrader.App.Avalonia.ViewModels; using PolyTrader.Core.Modularity; using PolyTrader.Modules.CopyTrading.Persistence; using PolyTraderSharp; using PolyTraderSharp.Models; namespace PolyTrader.App.Avalonia.Views.Modules { /// /// Copytrading-Fenster mit vier Tabs: Master-Trader, Offene Trades, Geschlossene Trades, /// Account-Einstellungen. Layout vollständig in CopyTradingWindow.axaml. /// public partial class CopyTradingWindow : UserControl { private readonly ObservableCollection _traders = new(); private readonly ObservableCollection _assignments = new(); private readonly ObservableCollection _openTrades = new(); private readonly ObservableCollection _closedTrades = new(); private readonly TradingState _state; private readonly CopyTradingState _copyState; private readonly ITrackedTraderRepository _traderRepo; private readonly ICopyTradingAccountSettingsRepository _settingsRepo; private readonly ICopyTradeLogRepository _tradeLog; private List _closedBase = new(); private bool _loading; public CopyTradingWindow() => AvaloniaXamlLoader.Load(this); public CopyTradingWindow(IModuleUiHost host, TradingState state, CopyTradingState copyState, ITrackedTraderRepository traderRepo, ICopyTradingAccountSettingsRepository settingsRepo, ICopyTradeLogRepository tradeLog) : this() { _state = state; _copyState = copyState; _traderRepo = traderRepo; _settingsRepo = settingsRepo; _tradeLog = tradeLog; // --- Master-Trader --- var gridTraders = this.FindControl("gridTraders")!; gridTraders.ItemsSource = _traders; gridTraders.SelectionChanged += (_, _) => ShowSelectedTrader(); this.FindControl("listAccounts")!.ItemsSource = _assignments; this.FindControl