using Avalonia.Controls; using Avalonia.Markup.Xaml; using IBKRTrader.App.Shell; using IBKRTrader.Core.Modularity; using IBKRTrader.Core.Time; using IBKRTrader.Core.Workers; namespace IBKRTrader.App.Views; /// /// Core-Ansicht: Worker- und Service-Übersicht, live an die gebunden. /// /// Die Liste selbst ändert sich zur Laufzeit nicht – die Worker werden einmal im /// Konstruktor der Engine registriert. Was sich ändert, sind die Eigenschaften je Zeile, und /// die meldet WorkerInfo über INotifyPropertyChanged. Deshalb genügt hier die /// direkte Bindung an die Liste der Engine, ohne eine gespiegelte Sammlung. /// public partial class WorkersWindow : Window { private readonly WorkerEngine _engine; public WorkersWindow(IModuleUiHost uiHost, WorkerEngine engine) { _engine = engine; InitializeComponent(); WindowMenu.Wire(this.FindControl("WindowMenuBar")!, uiHost, "core.workers"); var grid = this.FindControl("WorkersGrid")!; grid.ItemsSource = _engine.WorkerInfos; this.FindControl