Agendador Avalonia, Gantt e Kanban como Controles Nativos

O sgcPlanner traz para o Avalonia 12 um agendador de calendário, um gráfico de Gantt e um quadro Kanban como controles nativos: TsgcAvaloniaScheduler, TsgcAvaloniaGantt e TsgcAvaloniaKanban. Eles rodam no Windows, no Linux e no macOS, fazem binding com os seus view models em XAML e compartilham uma única lista de tarefas, de modo que um cartão solto no quadro move a barra no Gantt e o evento no calendário. Nenhum runtime WPF no meio, e os mesmos controles existem para WinForms, WPF e Delphi.

Uma Suíte de Planejamento Dentro da Sua Aplicação Avalonia

Três controles sobre um único objeto TsgcPlannerData. Coloque um, dois ou os três nas suas janelas.

Demo ProjectPlanner: as mesmas tarefas em um quadro Kanban, em um gráfico de Gantt e em um agendador
A demo ProjectPlanner: um projeto em um quadro Kanban, em um gráfico de Gantt e em um agendador. A ProjectPlannerAvalonia mostra o mesmo projeto em uma janela Avalonia.

Visões de calendário

View alterna o TsgcAvaloniaScheduler entre dia, semana útil, semana, mês, agenda, a linha do tempo de recursos e o ano, doze mini meses onde um clique duplo em um dia o abre na visão de dia. Options.GroupByResource dá a cada pessoa um grupo de colunas nas visões de dia.

Arraste para criar e editar

Um arraste em uma parte vazia da grade de horários cria um evento ajustado a Options.SlotMinutes e dispara OnItemCreate com o início, o fim e o recurso. Os eventos se movem e mudam de tamanho com o mouse, e com InplaceEdit a tecla F2 edita o título no próprio local.

Recorrência

Um item guarda uma regra iCalendar como FREQ=WEEKLY;BYDAY=TU em RecurrenceRule, e os dados expandem a série em ocorrências para o período visível. Arrastar uma ocorrência dispara OnRecurrenceEdit, onde você escolhe prsOccurrence, prsSeries ou prsCancel. Por padrão, o arraste move somente aquela ocorrência.

Lembretes e fusos horários

TsgcPlannerReminders informa os itens cujo ReminderMinutes venceu, com Dismiss e Snooze. Cada item pode ter o seu próprio TimeZone, e Data.DisplayTimeZone mostra o calendário inteiro no fuso que o usuário escolher.

Gráfico de Gantt

TsgcAvaloniaGantt tem uma grade de tarefas com colunas, resumos, marcos, progresso, dependências com agendamento automático, o caminho crítico e linhas de base. TimeScale.TierCount dá uma escala de tempo de três níveis, e ShowHistogram adiciona um painel de carga de recursos que pinta a sobrealocação na cor crítica.

Quadro Kanban

TsgcAvaloniaKanban mostra os itens como cartões em colunas por status. Um drop chama MoveItem nos dados, que notifica cada visão uma vez, e assim o Gantt e o agendador são redesenhados com o novo status. Raias e limites de WIP estão na edição Registrada.

Recursos e capacidade

Os recursos têm nome, cor e iniciais. Novidade no sgcUI 2026.11, TsgcPlannerResource.Capacity escala a carga no histograma, move a linha de capacidade e marca a sobrealocação acima dela, e é salvo em JSON e como MaxUnits nos arquivos do Microsoft Project.

Desfazer e refazer

Data.Undo desfaz um arraste ou uma edição em um único passo com Undo e Redo. CanUndo, CanRedo, UndoCaption e RedoCaption controlam os seus botões e as dicas deles.

Importar, exportar e imprimir

Os dados carregam e salvam JSON e leem um DataTable. A edição Registrada adiciona importação e exportação de iCalendar e de MS Project XML (MSPDI). A impressão com visualização e a saída PNG e SVG sem interface estão em todas as edições.

MVVM, Temas, Idiomas e Sincronização de Calendário

O planejador segue as convenções de uma aplicação Avalonia em vez de pedir que você adote as dele.

Binding MVVM em XAML

ItemsSource, ResourcesSource e DependenciesSource aceitam as suas próprias coleções, TsgcAvaloniaPlannerItemFields mapeia os nomes dos membros da sua classe, e SelectedItem faz binding nos dois sentidos. Um arraste em qualquer visão grava as novas datas ou o novo status nos seus objetos. Um único prefixo xmlns:sgc="https://www.esegece.com/sgcui" cobre todos os controles do sgcUI.

Temas, Fluent incluído

Os controles seguem a variante de tema Avalonia da sua aplicação, clara ou escura. Novidade no sgcUI 2026.11, com o preset Fluent eles assumem as cores do FluentTheme do Avalonia enquanto seguem o host, com os raios de canto e o anel de foco do Windows 11.

Da direita para a esquerda e acessibilidade

Os controles respeitam um FlowDirection da direita para a esquerda, e o Gantt pode espelhar a sua linha do tempo ou mantê-la da esquerda para a direita com MirrorTimeline. Cada controle tem um automation peer do Avalonia e navegação pelo teclado, de modo que os leitores de tela anunciam as visões, os itens e os horários. A acessibilidade vem ativada por padrão em todas as edições.

12 idiomas

Novidade no sgcUI 2026.11, os textos para o usuário final vêm de pacotes de idioma incorporados para inglês, espanhol, alemão, francês, italiano, holandês, polonês, português (Brasil), turco, japonês, coreano e chinês. sgcUILang.SetLanguage aceita um locale ou "auto" para a cultura atual da interface.

Sincronização com Outlook, Google e CalDAV

A bridge opcional esegece.sgcPlanner.sgcWebSockets da edição Registrada mantém os dados em sincronização nos dois sentidos com os calendários do Outlook do Microsoft 365 e do Outlook.com por meio do Microsoft Graph (TsgcPlannerGraphSync), com o Google Calendar (TsgcPlannerGoogleSync) e com qualquer servidor CalDAV, como Nextcloud, iCloud, Fastmail ou Radicale (TsgcPlannerCalDAVSync). TsgcPlannerICalSubscription mescla uma URL iCalendar somente leitura. A bridge usa o sgcWebSockets.

Smart Paste

Ctrl+Shift+V no agendador transforma um texto colado em uma reunião. Linhas como "Nome: valor" são lidas pelo parser embutido, e AIProvider aceita um TsgcUIAIEventProvider que chama o LLM da sua escolha para texto livre, como um e-mail. O Smart Paste também está na edição Community.

Um Agendador e um Gantt Ligados a um Único View Model

Copiado de um pequeno aplicativo Avalonia 12 em net8.0 com FluentTheme e compiled bindings, sem as linhas using e o namespace. O aplicativo compila com 0 avisos e 0 erros contra o build Registrado e o build Community do sgcPlanner.

O view model: classes simples

Os seus próprios tipos, sem nada para herdar. Uma reunião diária em pé é um item com uma regra de recorrência.

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) });
    }
}

A janela: duas visões sobre as mesmas coleções

Os mapas de campos dizem aos controles qual membro guarda o id, o título, as datas, o responsável e a regra.

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>

O code-behind: opções e o evento de criação

Agrupe a semana útil por pessoa, ajuste os novos eventos a 15 minutos, dê um nome ao evento que um arraste cria e dê ao Gantt uma escala de tempo de três níveis.

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";
    }
}

O projeto referencia Avalonia.Desktop e Avalonia.Themes.Fluent 12.1.4 e esegece.sgcPlanner.Avalonia, ou esegece.sgcPlanner.Avalonia.Community para a edição gratuita, na qual a reunião diária aparece uma só vez porque a recorrência é um recurso Registrado. A aplicação adiciona new FluentTheme() aos seus estilos e define DataContext = new TTeamViewModel() na janela.

Onde Ele Roda

Um único modelo de planejador, as mesmas visões em todos os hosts.

Host Controles Destinos
Avalonia 12TsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanbannet8.0, net9.0, net10.0 no Windows, no Linux e no macOS
WinForms e WPFTsgcWinFormsScheduler, Gantt e Kanban, e os equivalentes WPFPlataforma .NET, na mesma licença do Avalonia
Delphi e C++BuilderTsgcVCLScheduler, TsgcFMXScheduler e os equivalentes de Gantt e KanbanVCL e FireMonkey, na edição Delphi do sgcPlanner
HeadlessTsgcPlannerRendererSaída PNG e SVG sem janela, no Windows, no Linux e no macOS

Os controles Avalonia são desenhados com SkiaSharp sobre a base de controles Avalonia do sgcUICore. As demos TeamSchedulerAvalonia e ProjectPlannerAvalonia exigem o .NET SDK 8.0 ou mais recente e rodam no Windows, no Linux ou no macOS.

Três Maneiras de Ter um Agendador no Avalonia

Conforme lido em 2026-10-20, veja os guias Avalonia Pro e WinForms e WPF para Avalonia para as fontes.

  Uma suíte WPF no Avalonia XPF Avalonia Pro sgcPlanner for Avalonia
O que éum agendador WPF rodando no XPF, que o seu fornecedor chama de "a binary-compatible WPF runtime"os componentes premium do Avaloniacontroles nativos do Avalonia 12
Agendador, Gantt, Kanbanos da suíte WPF, com as condições das notas sobre bibliotecas de terceiros do XPF, por exemplo shims de API Win32 para controles DevExpressnão listados na página do Avalonia ProTsgcAvaloniaScheduler, TsgcAvaloniaGantt, TsgcAvaloniaKanban
LicençaXPF por aplicação, a partir de EUR 9.500 (Internal) e EUR 29.500 (Business), mais a licença da suíte WPFEUR 899 por assento por anopor desenvolvedor: sgcPlanner .NET €249, ou sgcUI .NET Enterprise €699, sem taxa por aplicação
Código-fonte código-fonte completo dos controles premium no Enterprisecódigo-fonte C# completo em toda licença Registrada
Camada gratuita Community, uso somente não comercial para novos cadastros desde 2026-04-07Pacotes NuGet Community, também para uso comercial abaixo de EUR 1.000.000 de receita e até cinco desenvolvedores

Para ser justo com os outros caminhos: o XPF pretende executar uma aplicação WPF existente no macOS e no Linux em grande parte como ela está, e o sgcPlanner não faz isso. O Avalonia Pro oferece componentes premium e ferramentas do fornecedor, como Hot Reload e DevTools, que o sgcUI não inclui. O sgcPlanner roda ao lado dos controles do Avalonia Pro na mesma janela.

Community ou Registrada

As duas edições têm os mesmos três controles. A edição Registrada adiciona os recursos avançados de planejamento e o código-fonte.

Community, gratuita

esegece.sgcPlanner.Avalonia.Community no NuGet, gratuito em projetos comerciais e não comerciais para pessoas físicas e organizações com receita bruta anual abaixo de EUR 1.000.000 e com no máximo cinco desenvolvedores. Visões de dia, semana útil, semana, mês e agenda, Gantt e Kanban com arraste, resumos, marcos, progresso, agrupamento por recurso, dados em DataTable e JSON, Smart Paste, impressão e saída PNG e SVG sem interface.

Registrada

esegece.sgcPlanner.Avalonia, no pacote individual sgcPlanner .NET €249 e no sgcUI .NET Enterprise €699 por desenvolvedor. Adiciona recorrência, a linha do tempo de recursos, dependências com agendamento automático, o caminho crítico, linhas de base, raias Kanban e limites de WIP, iCalendar e MS Project XML, a bridge de sincronização de calendário, código-fonte C# completo e redistribuição binária gratuita.

Duas Demos Avalonia com Autoverificação

Ambas rodam com dotnet run, e dotnet run -- --test result.txt grava uma linha PASS ou FAIL por verificação e encerra com o número de verificações que falharam.

TeamSchedulerAvalonia

Três semanas de reuniões de equipe para cinco pessoas: todas as visões, edição do título no local, desfazer e refazer, lembretes com Dismiss e Snooze, fusos horários por item, reuniões diárias e de sincronização recorrentes, arrastar para criar, agrupamento por recurso e Smart Paste.

ProjectPlannerAvalonia

Um projeto de relançamento de site mostrado ao mesmo tempo em um gráfico de Gantt, em um quadro Kanban e em uma semana, todos ligados aos mesmos dados: arraste um cartão de To do para Done e a barra do Gantt e o evento do calendário ficam verdes. Com a escala de tempo de três níveis, o histograma de recursos e o desfazer.

Veja as demos do sgcUI ou leia sobre cada recurso na página do produto sgcPlanner.

Perguntas sobre o Agendador Avalonia

O agendador é um controle Avalonia nativo ou um controle WPF em uma camada de compatibilidade?

É um controle Avalonia nativo. TsgcAvaloniaScheduler, TsgcAvaloniaGantt e TsgcAvaloniaKanban são construídos sobre o Avalonia e o Avalonia.Skia 12 e desenhados com SkiaSharp, no pacote esegece.sgcPlanner.Avalonia para net8.0, net9.0 e net10.0. Não há nenhum runtime WPF no meio, e os controles rodam no Windows, no Linux e no macOS.

Posso fazer binding do agendador ao meu próprio view model em XAML?

Sim. ItemsSource, ResourcesSource e DependenciesSource aceitam qualquer IEnumerable, por exemplo uma ObservableCollection da sua própria classe, e TsgcAvaloniaPlannerItemFields mapeia os nomes dos seus membros para id, título, início, fim, recursos, status, recorrência e os demais campos do item. SelectedItem faz binding nos dois sentidos, e um arraste ou uma edição no controle grava os novos valores de volta nos seus objetos. Os compiled bindings com x:DataType funcionam.

Existe uma edição gratuita do agendador Avalonia?

Sim. esegece.sgcPlanner.Avalonia.Community é gratuito para pessoas físicas e organizações com receita bruta anual abaixo de EUR 1.000.000 e com no máximo cinco desenvolvedores. Ele tem as visões de dia, semana útil, semana, mês e agenda, o Gantt e o quadro Kanban. Recorrência, a linha do tempo de recursos, dependências com agendamento automático, o caminho crítico, linhas de base, raias Kanban e limites de WIP, e a troca de iCalendar e MS Project XML exigem a edição Registrada.

O agendador Avalonia pode sincronizar com Outlook, Google Calendar ou CalDAV?

Sim, por meio do pacote bridge opcional esegece.sgcPlanner.sgcWebSockets da edição Registrada, que usa o sgcWebSockets. TsgcPlannerGraphSync mantém os dados em sincronização nos dois sentidos com um calendário do Outlook do Microsoft 365 ou do Outlook.com por meio do Microsoft Graph, TsgcPlannerGoogleSync com um calendário do Google e TsgcPlannerCalDAVSync com um calendário CalDAV, como Nextcloud, iCloud, Fastmail ou Radicale. TsgcPlannerICalSubscription mescla uma URL iCalendar somente leitura. A bridge trabalha sobre o objeto de dados, de modo que atende tanto os controles Avalonia quanto os de WinForms e WPF.

Qual edição do sgcUI inclui o sgcPlanner para Avalonia?

O sgcPlanner .NET está incluído na edição sgcUI .NET Enterprise e também é vendido como pacote individual. As duas licenças cobrem WinForms, WPF e Avalonia, com código-fonte C# completo e redistribuição binária gratuita.

Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Adicione um Agendador à Sua Aplicação Avalonia

Comece com o pacote Community gratuito do NuGet, ou com o pacote Registrado para recorrência, a linha do tempo, a sincronização de calendário e o código-fonte completo, e abra a demo TeamSchedulerAvalonia ao lado da sua aplicação.