Overview
FlowKanbanManager provides a comprehensive programmatic API for managing a FlowKanban board. It wraps the control and exposes fluent methods for columns, tasks, subtasks, lanes, WIP limits, blocked state, archiving, bulk operations, zoom, and persistence.
Namespace: Flowery.Uno.Kanban.ControlsAssembly:
Flowery.Uno.Kanban.dll
When to Use
✅ Use FlowKanbanManager for:- Programmatic board setup and manipulation
- Automated workflows (e.g., import from Jira, sync with database)
- Headless testing of Kanban logic
- Custom UI with Kanban data model
- Server-side board processing
- Standard interactive Kanban board with UI
- XAML-first development
- Minimal code-behind scenarios
Initialization
Basic Setup
With Auto-Lifecycle
Without Auto-Lifecycle
Core Properties
The underlying FlowKanban control.
The board data model. Shortcut to
Kanban.Board.View-only grouping mode:
None (standard columns) or Lane (swimlane matrix).The undo/redo manager instance. Access
CanUndo, CanRedo, NextUndoDescription, etc.Enables transactional command history. When true, operations are reversible.
All columns in the board.
All swimlanes in the board.
Number of columns.
Total tasks across all columns.
All tasks across all columns (including archived).
Current board size tier. Affects card font size and spacing.
Whether zoom in is possible.
Whether zoom out is possible.
Require confirmation before deleting columns.
Require confirmation before deleting tasks.
Auto-save board after edits (debounced 800ms).
Controls where inline “Add Card” control appears:
Bottom, Top, or Both.Last board ID loaded or saved by the control.
Column Operations
Adds a new column at the end.
Inserts a column at a specific position.
Removes a column and all its tasks. Returns true if removed.
Removes a column by title. Returns false if not found or multiple matches.
Removes the column at an index. Returns false if index out of range.
Finds a column by title. Returns null if not found.
Gets the column at an index. Returns null if index out of range.
Gets the index of a column. Returns -1 if not found.
Finds a column by its ID. Returns null if not found.
Moves a column to a new position. Returns false if not found or index invalid.
Renames a column.
Removes all columns from the board.
Gets all tasks in a column.
Task Operations
Adding Tasks
Adds a task to a column.
Adds a task to the column at an index. Returns null if column not found.
Adds a task to a column by ID. Returns null if column not found.
Inserts a task at a specific position in a column.
Finding Tasks
Finds a task by its ID. Returns null if not found.
Finds all tasks matching a predicate.
Finds the column containing a task. Returns null if not found.
Finds the column containing a task by task ID.
Finds a task within a specific column by IDs.
Moving Tasks
Moves a task to a different column. Returns false if task not found.
Attempts to move a task, raising
CardMoving (cancelable) and CardMoved events. Returns true if move succeeded.TryMoveTaskWithWipEnforcement(task, targetColumn, targetIndex?, targetLaneId?, enforceHard?)
MoveResult
Attempts to move a task with automatic WIP enforcement.Parameters:
task- The task to movetargetColumn- Destination columntargetIndex- Optional index within target columntargetLaneId- Optional lane ID overrideenforceHard- When true, blocks moves that exceed WIP; when false, allows with warning
MoveResult enum:Success- Moved without WIP issuesAllowedWithWipWarning- Moved but exceeds WIP limit (soft enforcement)BlockedByWip- Move blocked due to WIP limit (hard enforcement)CanceledByEvent- Cancelled byCardMovingevent handlerNotFound- Task not found
Validates whether a move would exceed WIP limits without performing the move.
Moves a task within its current column to a new position. Returns false if task not found.
Updating Tasks
Updates a task’s properties. Only non-null parameters are updated.
Updates a task within a specific column by IDs. Returns false if not found.
Removing Tasks
Removes a task from the board. Returns false if not found.
Removes a task by its ID. Returns false if not found.
Removes a task from a specific column. Returns false if not found.
Removes a task from a specific column by IDs. Returns false if not found.
Clears all tasks from all columns (keeps column structure).
Clears all tasks from a specific column.
Lane Operations
Appends a new lane to the board.
Inserts a lane at a specific position.
Deletes a lane and reassigns tasks to fallback lane (or null if not provided). Returns false if not found.
Removes a lane by its ID. Returns false if not found.
Removes the lane at an index. Returns false if index out of range.
Finds a lane by its ID. Returns null if not found.
Finds a lane by its title. Returns null if not found.
Gets the lane at an index. Returns null if index out of range.
Gets the index of a lane. Returns -1 if not found.
Rearranges lane order. Returns false if not found or index invalid.
Renames a lane.
Removes all lanes from the board.
Returns all tasks assigned to a lane.
Assigns a task to a lane (or clears assignment when lane is null).
Subtask Operations
Adds a subtask to a task.
Removes a subtask from a task. Returns false if not found.
Toggles a subtask’s completion status.
Sets all subtasks’ completion status.
Clears all subtasks from a task.
Returns a tuple of (completed count, total count).
WIP Limit Operations
Sets the WIP limit for a column (null for unlimited).
Sets the WIP limit for a specific lane in a column (overrides column-level limit).
Clears the WIP limit override for a specific lane.
Gets the effective WIP limit for a lane in a column.
Returns true if a column has exceeded its WIP limit.
Returns all columns that are over their WIP limit.
Count of columns exceeding WIP limits.
Blocked State Operations
Marks a task as blocked with an optional reason.Blocked tasks:
- Cannot move forward to later columns
- Cannot be archived
- Progress capped at 99% until unblocked
- Can still be edited and moved backward
Clears the blocked state from a task.
Returns all currently blocked tasks.
Count of blocked tasks.
Returns tasks blocked for more than the specified days.
Column Policy Operations
Sets the policy text for a column (DoD, entry criteria, etc.).
Returns all columns that have policy text defined.
Archive Operations
Returns the archive column, if configured.
Returns true if the column is the configured archive column.
Ensures the archive column exists and returns it. Creates if missing.
Sets the archive column for the board.
Archives a task. Moves to archive column and sets
IsArchived flag.Blocked tasks cannot be archived.Unarchives a task. Restores to original column (or first non-archive column).
Archives all completed tasks (100% progress) in a column. Returns count archived.
Returns all archived tasks across the board.
Returns all non-archived (active) tasks.
Count of archived tasks.
Permanently removes all archived tasks from the board. Returns count removed.
Done Column Operations
Returns the Done column, if configured.
Returns true if the column is the configured Done column.
Sets the Done column for the board.
Ensures Done timestamps are populated for tasks in the Done column. Clears timestamps for active tasks outside Done.
Archives Done tasks that exceed the configured aging window. Returns count archived.Requires
Board.AutoArchiveDoneEnabled = true and Board.AutoArchiveDoneDays > 0.Selection Operations
All currently selected tasks.
Count of selected tasks.
True if any tasks are selected.
Selects a task.
Deselects a task.
Toggles a task’s selection state.
Selects all visible (non-archived) tasks.
Deselects all tasks.
Bulk Operations
Moves all selected tasks to a target column. Returns count moved.
Sets priority for all selected tasks. Returns count updated.
Sets tags for all selected tasks (comma separated). Returns count updated.
Sets due date for all selected tasks. Returns count updated.
Sets blocked state for all selected tasks. Returns count updated.
Archives all selected tasks. Returns count archived.
Deletes all selected tasks. Returns count deleted.
Zoom Operations
Increases board size tier. Returns false if already at maximum.
Decreases board size tier. Returns false if already at minimum.
Sets the board to a specific size tier.
Board Operations
Clears the entire board (all columns and tasks).
Resets the board with specified default columns.
Creates a typical Kanban board with localized “Backlog”, “To Do”, “In Progress”, and “Done” columns.
Returns the board data as a serializable model.
Replaces the current board with new data.
Exports the board to JSON string.
Imports board data from JSON. Returns false if import failed.
Returns statistics about the board.BoardStatistics Properties:
ColumnCount: int- Number of columnsTotalTaskCount: int- Total tasksTasksPerColumn: Dictionary<string, int>- Task count by column titleEmptyColumns: int- Number of columns with no tasks
Persistence Operations
Lifecycle Management
Loads persisted settings and the last saved board. Returns true if a board was loaded.
Saves the current board and settings.
Attaches to the Kanban Loaded/Unloaded events for automatic init/teardown.
Detaches from the Kanban Loaded/Unloaded events.
Board Persistence
Saves the current board to persistent storage. Returns false if error occurred.
Loads the last saved board. Returns false if not found or error occurred.
Loads a specific board by its ID. Returns false if not found or error occurred.
Refreshes the in-memory list of available boards.
Lists available boards using lightweight metadata.
Renames a stored board without loading it. Returns false if not found or error occurred.
Deletes a stored board by ID. Returns false if not found or error occurred.
Duplicates a stored board. Returns false if not found or error occurred.
Exports a stored board to JSON without loading it. Returns null if not found or error occurred.
Settings Persistence
Saves the current Kanban settings. Returns false if error occurred.
Loads Kanban settings from persistent storage. Returns false if error occurred.
Forces a settings reload from persistent storage. Returns false if error occurred.
Applies all settings in one call.
Enables auto-save after edits.
Disables auto-save after edits.
Events
Raised after
Initialize() completes.Raised after
Shutdown() completes.Raised after settings are loaded successfully.
Raised after settings are saved successfully.
Raised after a board is loaded successfully.
Raised after a board is saved successfully.
Raised when a persistence operation fails.FlowKanbanPersistenceFailedEventArgs Properties:
Operation: FlowKanbanPersistenceOperation- The failed operationException: Exception- The exception that occurred
LoadSettingsSaveSettingsLoadBoardSaveBoardListBoardsRenameBoardDeleteBoardDuplicateBoardExportBoard
Complete Example
Related Components
- FlowKanban - Interactive Kanban board control
- FlowKanbanHome - Multi-board home screen
FlowKanbanData- Board data modelFlowTask- Task data modelFlowKanbanColumnData- Column data modelFlowKanbanLane- Lane data model

