Dependency: Avalonia 12.0.0 (library has no other NuGet dependencies).
DockRegionnow auto-selects the first tab whenItemsSourcehas items andSelectedItemis unset or no longer in the collection.- Content appears in
ContentHostwithout requiring an explicitSelectedItembinding in simple apps. - Bind
SelectedItemwhen you need to restore layout, drive selection from a ViewModel, or select a specific tab on startup.
DockShell.DefaultTabStripPlacement— shell-wide default when a region’sTabStripPlacementis unset (null, default).DockRegion.TabStripPlacement— optional per-region override (null= inherit shell default).ShowTabStripPlacementPicker— optional ⋮ button after Add; opens a menu to setTabStripPlacement(Top / Right / Bottom / Left).TabStripTrailingContent— optional slot to the right of Add and the placement menu for app-defined buttons or views.- Tab strip header stays visible when any chrome is shown, even if
ItemsSourceis empty (same rules asShowAddDoc).
- Cross-region drag — moving the last tab out of a region (especially while layout-expanded) no longer throws
ArgumentOutOfRangeException; selection is updated before the source list removes the item. - Tab header bindings —
CloseTabContentand vertical header mode bind correctly fromDockRegion(fixesAncestor not foundforDockTabHeaderinsideTabControl.ItemTemplate). - Layout collapse — restoring row/column definitions after auto-collapse uses bounds-safe indices.
dotnet add package GOZA.Dock --version 1.0.5Requires Avalonia 12.0.0+ in the consuming app.
Dependency: Avalonia 12.0.0 (library has no other NuGet dependencies).
- When
ItemsSourceis empty andShowAddDocis false, the tab strip header and separator are fully hidden — no leftover gap or seam. - When only
ShowAddDocis visible (no tabs), the add button spans the header strip with placement-aware alignment. - Themes such as Semi that draw
TabControl#PART_BorderSeparatorare overridden;DockRegionuses theTabStripHostborder for the strip/content edge instead.
dotnet add package GOZA.Dock --version 1.0.4Requires Avalonia 12.0.0+ in the consuming app.
Dependency: Avalonia 12.0.0 (library has no other NuGet dependencies).
ReuseSurfaceandIsClosableare required properties on each tab item (no default interface implementations). Set them explicitly on your ViewModel.
DockRegion.AddDocContent— custom “+” button content (null= built-in vector icon).DockRegion.CloseTabContent— custom close button content for all tabs in the region.
- When a region’s
ItemsSourcebecomes empty (close last tab, drag away, etc.), layout expansion auto-collapses if that region was maximized.
dotnet add package GOZA.Dock --version 1.0.3Requires Avalonia 12.0.0+ in the consuming app.
Dependency: Avalonia 12.0.0 (library has no other NuGet dependencies).
IDockTabItem.IsClosableshows a close button on the tab header.- When
ItemsSourceis anIList, closing removes the tab and evicts any cached parking-lot surface for thatId. - Optional
DockRegion.CloseTabCommandruns after the tab is removed (e.g. dispose ViewModels).
- Left/right tab strips use stacked vertical letter headers by default (
DockShell.UseVerticalTabHeaders, defaulttrue). - Per-region override:
DockRegion.UseVerticalTabHeaders(bool?).
DockRegion.ShowAddDoc+AddDocCommand— optional “+” button at the end of the tab strip.
- Tab close and add buttons use vector
DockChromeIconpaths (theme-default foreground). - Drag ghost from left/right vertical strips renders as a horizontal preview with correct grab offset.
dotnet add package GOZA.Dock --version 1.0.2Dependency: Avalonia 12.0.0.
- Cache key remains
tab.Id. Release/Activatematch and refresh surfaces byId, not VM instance reference.
dotnet add package GOZA.Dock --version 1.0.1Initial release: DockShell, DockRegion, DockSplitter, tab drag/reorder, cross-region moves, layout expansion, optional parking lot, drag theme resources.