KeyedRow<TValue> class Core
A row whose IDENTITY is stable while its VALUE is replaced.
This is the whole trick behind KeyedItemsSource. Selection, the cursor, the open editor and the scroll anchor are all re-anchored by OBJECT REFERENCE after a reshape; a feed that pushes a fresh object per update would therefore drop the user's selection on every tick, which is not a rough edge but the feature being unusable. Keeping one object per key and swapping what is inside it means none of that machinery has to learn about keys at all.
The cost is one indirection in the column getters — r => r.Value.Price rather than r => r.Price. That is visible in the application's code, on purpose: it is exactly the place where "this row survives its values" is worth knowing.
public sealed class KeyedRow<TValue>
- Namespace
- ArionUI.Core
- Package
- ArionUI.Core ·
dotnet add package ArionUI.Core --prerelease
Properties
Value
public TValue Value { get; }The latest observation for this key.
Methods
ToString
public override string? ToString();
