mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 17:02:51 +08:00

This commit also adds functionality to LiveRenderable that should fix some problems related to vertical overflow. Closes #316 Closes #415
62 lines
1.3 KiB
Markdown
62 lines
1.3 KiB
Markdown
Title: Live Display
|
|
Order: 0
|
|
---
|
|
|
|
Spectre.Console can update arbitrary widgets in-place.
|
|
|
|
<?# Alert ?>
|
|
The live display is not
|
|
thread safe, and using it together with other interactive components such as
|
|
prompts, status displays or other progress displays are not supported.
|
|
<?#/ Alert ?>
|
|
|
|
```csharp
|
|
var table = new Table().Centered();
|
|
|
|
AnsiConsole.Live(table)
|
|
.Start(ctx =>
|
|
{
|
|
table.AddColumn("Foo");
|
|
ctx.Refresh();
|
|
Thread.Sleep(1000);
|
|
|
|
table.AddColumn("Bar");
|
|
ctx.Refresh();
|
|
Thread.Sleep(1000);
|
|
});
|
|
```
|
|
|
|
## Asynchronous progress
|
|
|
|
If you prefer to use async/await, you can use `StartAsync` instead of `Start`.
|
|
|
|
```csharp
|
|
var table = new Table().Centered();
|
|
|
|
await AnsiConsole.Live(table)
|
|
.StartAsync(async ctx =>
|
|
{
|
|
table.AddColumn("Foo");
|
|
ctx.Refresh();
|
|
await Task.Delay(1000);
|
|
|
|
table.AddColumn("Bar");
|
|
ctx.Refresh();
|
|
await Task.Delay(1000);
|
|
});
|
|
```
|
|
|
|
## Configure
|
|
|
|
```csharp
|
|
var table = new Table().Centered();
|
|
|
|
AnsiConsole.Live(table)
|
|
.AutoClear(false) // Do not remove when done
|
|
.Overflow(VerticalOverflow.Ellipsis) // Show ellipsis when overflowing
|
|
.Cropping(VerticalOverflowCropping.Top) // Crop overflow at top
|
|
.Start(ctx =>
|
|
{
|
|
// Omitted
|
|
});
|
|
``` |