Avalonia Scheduler, Gantt en Kanban als native besturingselementen

sgcPlanner brengt een agenda-scheduler, een Gantt-diagram en een Kanban-bord als native besturingselementen naar Avalonia 12: TsgcAvaloniaScheduler, TsgcAvaloniaGantt en TsgcAvaloniaKanban. Ze draaien op Windows, Linux en macOS, binden in XAML aan je view models en delen één takenlijst, zodat een kaart die je op het bord loslaat de balk in de Gantt en de afspraak in de agenda verplaatst. Geen WPF-runtime ertussen, en dezelfde besturingselementen bestaan voor WinForms, WPF en Delphi.

Een planningssuite in je Avalonia-app

Drie besturingselementen op één TsgcPlannerData-object. Plaats er één, twee of alle drie in je vensters.

ProjectPlanner-demo: dezelfde taken op een Kanban-bord, in een Gantt-diagram en in een scheduler
De ProjectPlanner-demo: één project op een Kanban-bord, in een Gantt-diagram en in een scheduler. ProjectPlannerAvalonia toont hetzelfde project in een Avalonia-venster.

Agendaweergaven

View schakelt TsgcAvaloniaScheduler tussen dag, werkweek, week, maand, agenda, de resourcetijdlijn en het jaar, twaalf minimaanden waarin een dubbelklik op een dag deze opent in de dagweergave. Options.GroupByResource geeft elke persoon een groep kolommen in de dagweergaven.

Slepen om te maken en te bewerken

Een sleepbeweging op een leeg deel van het tijdraster maakt een afspraak die aansluit op Options.SlotMinutes en activeert OnItemCreate met de start, het einde en de resource. Afspraken verplaats en vergroot je met de muis, en met InplaceEdit bewerkt F2 de titel ter plaatse.

Herhaling

Een item bewaart een iCalendar-regel zoals FREQ=WEEKLY;BYDAY=TU in RecurrenceRule, en de gegevens breiden de reeks uit tot afzonderlijke voorkomens voor de zichtbare periode. Het slepen van een voorkomen activeert OnRecurrenceEdit, waar je prsOccurrence, prsSeries of prsCancel kiest. Standaard verplaatst het slepen alleen dat voorkomen.

Herinneringen en tijdzones

TsgcPlannerReminders meldt de items waarvan de ReminderMinutes verlopen zijn, met Dismiss en Snooze. Elk item kan zijn eigen TimeZone hebben, en Data.DisplayTimeZone toont de hele agenda in de zone die de gebruiker kiest.

Gantt-diagram

TsgcAvaloniaGantt heeft een taakraster met kolommen, samenvattingen, mijlpalen, voortgang, afhankelijkheden met automatische planning, het kritieke pad en baselines. TimeScale.TierCount geeft een tijdschaal met drie niveaus, en ShowHistogram voegt een resourcebelastingspaneel toe dat overbelasting in de kritieke kleur tekent.

Kanban-bord

TsgcAvaloniaKanban toont de items als kaarten in kolommen per status. Bij het loslaten wordt MoveItem op de gegevens aangeroepen, wat elke weergave één keer op de hoogte brengt, zodat de Gantt en de scheduler opnieuw tekenen met de nieuwe status. Swimlanes en WIP-limieten zitten in de Registered-editie.

Resources en capaciteit

Resources hebben een naam, een kleur en initialen. Nieuw in sgcUI 2026.11: TsgcPlannerResource.Capacity schaalt de belasting in het histogram, verplaatst de capaciteitslijn en markeert de overbelasting erboven, en wordt opgeslagen in JSON en als MaxUnits in Microsoft Project-bestanden.

Ongedaan maken en opnieuw

Data.Undo maakt een sleepbeweging of bewerking in één stap ongedaan met Undo en Redo. CanUndo, CanRedo, UndoCaption en RedoCaption sturen je knoppen en hun tooltips aan.

Importeren, exporteren en afdrukken

De gegevens worden als JSON geladen en opgeslagen en gelezen uit een DataTable. De Registered-editie voegt import en export van iCalendar en MS Project XML (MSPDI) toe. Afdrukken met voorbeeld en headless uitvoer als PNG en SVG zitten in elke editie.

MVVM, thema's, talen en agendasynchronisatie

De planner volgt de conventies van een Avalonia-toepassing in plaats van te vragen dat je die van hem overneemt.

MVVM-binding in XAML

ItemsSource, ResourcesSource en DependenciesSource accepteren je eigen collecties, TsgcAvaloniaPlannerItemFields koppelt de membernamen van je klasse, en SelectedItem bindt in twee richtingen. Een sleepbeweging in elke weergave schrijft de nieuwe datums of status terug naar je objecten. Eén prefix xmlns:sgc="https://www.esegece.com/sgcui" dekt alle sgcUI-besturingselementen.

Thema's, Fluent inbegrepen

De besturingselementen volgen de Avalonia-themavariant van je app, licht of donker. Nieuw in sgcUI 2026.11: onder de Fluent-preset nemen ze de kleuren van het Avalonia-FluentTheme over zolang ze de host volgen, met de hoekradii en de focusring van Windows 11.

De besturingselementen respecteren een FlowDirection van rechts naar links, en de Gantt kan zijn tijdlijn spiegelen of van links naar rechts houden met MirrorTimeline. Elk besturingselement heeft een Avalonia-automation peer en toetsenbordnavigatie, zodat schermlezers de weergaven, items en tijdvakken aankondigen. Toegankelijkheid staat standaard aan in elke editie.

12 talen

Nieuw in sgcUI 2026.11: de teksten voor eindgebruikers komen uit ingebedde taalpakketten voor Engels, Spaans, Duits, Frans, Italiaans, Nederlands, Pools, Portugees (Brazilië), Turks, Japans, Koreaans en Chinees. sgcUILang.SetLanguage accepteert een locale of "auto" voor de huidige UI-cultuur.

Outlook-, Google- en CalDAV-synchronisatie

De optionele bridge esegece.sgcPlanner.sgcWebSockets van de Registered-editie houdt de gegevens in twee richtingen gesynchroniseerd met Outlook-agenda's van Microsoft 365 en Outlook.com via Microsoft Graph (TsgcPlannerGraphSync), met Google Calendar (TsgcPlannerGoogleSync) en met elke CalDAV-server zoals Nextcloud, iCloud, Fastmail of Radicale (TsgcPlannerCalDAVSync). TsgcPlannerICalSubscription voegt een alleen-lezen iCalendar-URL samen. De bridge gebruikt sgcWebSockets.

Smart Paste

Ctrl+Shift+V op de scheduler maakt van geplakte tekst een vergadering. Regels zoals "Naam: waarde" worden gelezen door de ingebouwde parser, en AIProvider accepteert een TsgcUIAIEventProvider die het LLM van je keuze aanroept voor vrije tekst zoals een e-mail. Smart Paste zit ook in de Community-editie.

Een Scheduler en een Gantt gebonden aan één view model

Gekopieerd uit een kleine Avalonia 12-app op net8.0 met FluentTheme en gecompileerde bindings, zonder de using-regels en de namespace. De app compileert met 0 waarschuwingen en 0 fouten tegen de Registered- en de Community-build van sgcPlanner.

Het view model: gewone klassen

Je eigen types, niets om van te erven. Een dagelijkse stand-up is één item met een herhalingsregel.

TTeamViewModel.cs
public class TMeeting
{
    public string Key { get; set; }
    public string Subject { get; set; }
    public DateTime Begin { get; set; }
    public DateTime End { get; set; }
    public string Owner { get; set; }
    public string Rule { get; set; }
}

public class TPerson
{
    public string Code { get; set; }
    public string Label { get; set; }
}

public class TTeamViewModel
{
    public ObservableCollection<TMeeting> Meetings { get; } = new ObservableCollection<TMeeting>();
    public ObservableCollection<TPerson> People { get; } = new ObservableCollection<TPerson>();

    public TTeamViewModel()
    {
        People.Add(new TPerson { Code = "ann", Label = "Ann" });
        People.Add(new TPerson { Code = "bob", Label = "Bob" });
        DateTime vMonday = DateTime.Today.AddDays(-(((int)DateTime.Today.DayOfWeek + 6) % 7));
        Meetings.Add(new TMeeting { Key = "m1", Subject = "Stand-up", Owner = "ann",
            Begin = vMonday.AddHours(9), End = vMonday.AddHours(9.25),
            Rule = "FREQ=DAILY;BYDAY=MO,TU,WE,TH,FR" });
        Meetings.Add(new TMeeting { Key = "m2", Subject = "Design review", Owner = "bob",
            Begin = vMonday.AddDays(2).AddHours(14), End = vMonday.AddDays(2).AddHours(15) });
    }
}

Het venster: twee weergaven op dezelfde collecties

De veldtoewijzingen vertellen de besturingselementen welk member de id, de titel, de datums, de eigenaar en de regel bevat.

MainWindow.axaml
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sgc="https://www.esegece.com/sgcui"
        xmlns:local="using:TeamCalendar"
        x:Class="TeamCalendar.MainWindow"
        x:DataType="local:TTeamViewModel"
        Title="Team calendar" Width="1100" Height="720">
  <TabControl>
    <TabItem Header="Calendar">
      <sgc:TsgcAvaloniaScheduler x:Name="scheduler" View="psvWorkWeek" InplaceEdit="True"
                                 ItemsSource="{Binding Meetings}" ResourcesSource="{Binding People}">
        <sgc:TsgcAvaloniaScheduler.ItemFields>
          <sgc:TsgcAvaloniaPlannerItemFields IdField="Key" TitleField="Subject" StartField="Begin"
                                             FinishField="End" ResourcesField="Owner"
                                             RecurrenceField="Rule"/>
        </sgc:TsgcAvaloniaScheduler.ItemFields>
        <sgc:TsgcAvaloniaScheduler.ResourceFields>
          <sgc:TsgcAvaloniaPlannerResourceFields IdField="Code" NameField="Label"/>
        </sgc:TsgcAvaloniaScheduler.ResourceFields>
      </sgc:TsgcAvaloniaScheduler>
    </TabItem>
    <TabItem Header="Gantt">
      <sgc:TsgcAvaloniaGantt x:Name="gantt" ShowHistogram="True" ShowToday="True"
                             ItemsSource="{Binding Meetings}" ResourcesSource="{Binding People}">
        <sgc:TsgcAvaloniaGantt.ItemFields>
          <sgc:TsgcAvaloniaPlannerItemFields IdField="Key" TitleField="Subject" StartField="Begin"
                                             FinishField="End" ResourcesField="Owner"/>
        </sgc:TsgcAvaloniaGantt.ItemFields>
        <sgc:TsgcAvaloniaGantt.ResourceFields>
          <sgc:TsgcAvaloniaPlannerResourceFields IdField="Code" NameField="Label"/>
        </sgc:TsgcAvaloniaGantt.ResourceFields>
      </sgc:TsgcAvaloniaGantt>
    </TabItem>
  </TabControl>
</Window>

De code-behind: opties en de create-gebeurtenis

Groepeer de werkweek per persoon, laat nieuwe afspraken aansluiten op 15 minuten, geef de door slepen gemaakte afspraak een naam en geef de Gantt een tijdschaal met drie niveaus.

MainWindow.axaml.cs
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        scheduler.Options.GroupByResource = true;
        scheduler.Options.SlotMinutes = 15;
        // a drag on an empty slot creates a meeting: name it here
        scheduler.OnItemCreate = DoItemCreate;
        // three tier timescale over the Gantt bars
        gantt.TimeScale.TierCount = 3;
    }

    private void DoItemCreate(object aSender, DateTime aStart, DateTime aFinish,
        string aResourceId, ref string aTitle, ref bool aAccept)
    {
        aTitle = "New meeting";
    }
}

Het project verwijst naar Avalonia.Desktop en Avalonia.Themes.Fluent 12.1.4 en naar esegece.sgcPlanner.Avalonia, of naar esegece.sgcPlanner.Avalonia.Community voor de gratis editie, waar de stand-up maar één keer verschijnt omdat herhaling een Registered-functie is. De toepassing voegt new FluentTheme() toe aan haar stijlen en stelt DataContext = new TTeamViewModel() in op het venster.

Waar het draait

Eén plannermodel, dezelfde weergaven in elke host.

Host Besturingselementen Doelen
Avalonia 12TsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanbannet8.0, net9.0, net10.0 op Windows, Linux en macOS
WinForms en WPFTsgcWinFormsScheduler, Gantt en Kanban, en de WPF-tegenhangers.NET, in dezelfde licentie als Avalonia
Delphi en C++BuilderTsgcVCLScheduler, TsgcFMXScheduler en hun Gantt- en Kanban-tegenhangersVCL en FireMonkey, in de Delphi-editie van sgcPlanner
HeadlessTsgcPlannerRendererPNG- en SVG-uitvoer zonder venster, op Windows, Linux en macOS

De Avalonia-besturingselementen worden getekend met SkiaSharp op de Avalonia-besturingselementbasis van sgcUICore. De demo's TeamSchedulerAvalonia en ProjectPlannerAvalonia hebben de .NET SDK 8.0 of nieuwer nodig en draaien op Windows, Linux of macOS.

Drie manieren om een scheduler op Avalonia te krijgen

Zoals gelezen op 2026-10-20, zie de gidsen Avalonia Pro en WinForms en WPF naar Avalonia voor de bronnen.

  Een WPF-suite op Avalonia XPF Avalonia Pro sgcPlanner voor Avalonia
Wat het iseen WPF-scheduler die op XPF draait, door de leverancier "een binair compatibele WPF-runtime" genoemdde premium Avalonia-componentennative Avalonia 12-besturingselementen
Scheduler, Gantt, Kanbandie van de WPF-suite, met de voorwaarden uit de XPF-notities over bibliotheken van derden, bijvoorbeeld Win32-API-shims voor DevExpress-besturingselementenniet vermeld op de pagina van Avalonia ProTsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanban
LicentieXPF per toepassing, vanaf 9.500 EUR (Internal) en 29.500 EUR (Business), plus de licentie van de WPF-suite899 EUR per seat per jaarper ontwikkelaar: sgcPlanner .NET €249, of sgcUI .NET Enterprise €699, zonder vergoeding per toepassing
Broncode volledige broncode voor premium besturingselementen in Enterprisevolledige C#-broncode in elke Registered-licentie
Gratis niveau Community, sinds 2026-04-07 voor nieuwe aanmeldingen alleen niet-commercieel gebruikCommunity NuGet-pakketten, ook voor commercieel gebruik onder 1.000.000 EUR omzet en tot vijf ontwikkelaars

Om eerlijk te zijn tegenover de andere routes: XPF wil een bestaande WPF-toepassing grotendeels ongewijzigd op macOS en Linux laten draaien, en dat doet sgcPlanner niet. Avalonia Pro biedt premium componenten en leverancierstools zoals Hot Reload en DevTools, die sgcUI niet meelevert. sgcPlanner draait in hetzelfde venster naast Avalonia Pro-besturingselementen.

Community of Registered

Beide edities hebben dezelfde drie besturingselementen. De Registered-editie voegt de geavanceerde planningsfuncties en de broncode toe.

Community, gratis

esegece.sgcPlanner.Avalonia.Community op NuGet, gratis in commerciële en niet-commerciële projecten voor particulieren en organisaties met minder dan 1.000.000 EUR bruto jaaromzet en niet meer dan vijf ontwikkelaars. Weergaven dag, werkweek, week, maand en agenda, Gantt en Kanban met slepen, samenvattingen, mijlpalen, voortgang, groeperen per resource, DataTable- en JSON-gegevens, Smart Paste, afdrukken en headless PNG- en SVG-uitvoer.

Registered

esegece.sgcPlanner.Avalonia, in het losse pakket sgcPlanner .NET €249 en in sgcUI .NET Enterprise €699 per ontwikkelaar. Voegt herhaling toe, de resourcetijdlijn, afhankelijkheden met automatische planning, het kritieke pad, baselines, Kanban-swimlanes en WIP-limieten, iCalendar en MS Project XML, de agendasynchronisatiebridge, volledige C#-broncode en gratis binaire herdistributie.

Twee Avalonia-demo's met zelfcontrole

Beide draaien met dotnet run, en dotnet run -- --test result.txt schrijft per controle één PASS- of FAIL-regel en sluit af met het aantal mislukte controles.

TeamSchedulerAvalonia

Drie weken teamvergaderingen voor vijf personen: elke weergave, titel ter plaatse bewerken, ongedaan maken en opnieuw, herinneringen met Dismiss en Snooze, tijdzones per item, terugkerende stand-ups en syncs, slepen om te maken, groeperen per resource en Smart Paste.

ProjectPlannerAvalonia

Een websiterelaunch-project dat tegelijk wordt getoond in een Gantt-diagram, een Kanban-bord en een week, allemaal gebonden aan dezelfde gegevens: sleep een kaart van To do naar Done en de Gantt-balk en de agenda-afspraak worden groen. Met de tijdschaal met drie niveaus, het resourcehistogram en ongedaan maken.

Bekijk de sgcUI-demo's of lees over elke functie op de productpagina van sgcPlanner.

Vragen over de Avalonia Scheduler

Is de scheduler een native Avalonia-besturingselement of een WPF-besturingselement op een compatibiliteitslaag?

Het is een native Avalonia-besturingselement. TsgcAvaloniaScheduler, TsgcAvaloniaGantt en TsgcAvaloniaKanban zijn gebouwd op Avalonia en Avalonia.Skia 12 en getekend met SkiaSharp, in het pakket esegece.sgcPlanner.Avalonia voor net8.0, net9.0 en net10.0. Er zit geen WPF-runtime tussen, en de besturingselementen draaien op Windows, Linux en macOS.

Kan ik de scheduler in XAML aan mijn eigen view model binden?

Ja. ItemsSource, ResourcesSource en DependenciesSource accepteren elke IEnumerable, bijvoorbeeld een ObservableCollection van je eigen klasse, en TsgcAvaloniaPlannerItemFields koppelt de namen van je members aan id, titel, start, einde, resources, status, herhaling en de andere itemvelden. SelectedItem bindt in twee richtingen, en een sleepbeweging of bewerking in het besturingselement schrijft de nieuwe waarden terug naar je objecten. Gecompileerde bindings met x:DataType werken.

Is er een gratis editie van de Avalonia Scheduler?

Ja. esegece.sgcPlanner.Avalonia.Community is gratis voor particulieren en organisaties met minder dan 1.000.000 EUR bruto jaaromzet en niet meer dan vijf ontwikkelaars. Het bevat de weergaven dag, werkweek, week, maand en agenda, de Gantt en het Kanban-bord. Herhaling, de resourcetijdlijn, afhankelijkheden met automatische planning, het kritieke pad, baselines, Kanban-swimlanes en WIP-limieten, en de uitwisseling van iCalendar en MS Project XML vereisen de Registered-editie.

Kan de Avalonia Scheduler synchroniseren met Outlook, Google Calendar of CalDAV?

Ja, via het optionele bridge-pakket esegece.sgcPlanner.sgcWebSockets van de Registered-editie, dat sgcWebSockets gebruikt. TsgcPlannerGraphSync houdt de gegevens in twee richtingen gesynchroniseerd met een Outlook-agenda van Microsoft 365 of Outlook.com via Microsoft Graph, TsgcPlannerGoogleSync met een Google-agenda en TsgcPlannerCalDAVSync met een CalDAV-agenda zoals Nextcloud, iCloud, Fastmail of Radicale. TsgcPlannerICalSubscription voegt een alleen-lezen iCalendar-URL samen. De bridge werkt op het gegevensobject, dus hij bedient zowel de Avalonia-besturingselementen als die van WinForms en WPF.

Welke sgcUI-editie bevat sgcPlanner voor Avalonia?

sgcPlanner .NET zit in de editie sgcUI .NET Enterprise en wordt ook als los pakket verkocht. Beide licenties dekken WinForms, WPF en Avalonia, met de volledige C#-broncode en gratis binaire herdistributie.

De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Voeg een scheduler toe aan je Avalonia-app

Begin met het gratis Community-pakket van NuGet, of met het Registered-pakket voor herhaling, tijdlijn, agendasynchronisatie en volledige broncode, en open de demo TeamSchedulerAvalonia naast je app.