UI Toolkit: Data Binding View on Asset Store (opens in new tab)

Package details

Latest version
1.0.2
Last updated
First released
Unity version
6000.3.10 or later
Package size
89 KB
Files
89
Favorites
1
Views in the past week
8

Price tracking

Last checked
Tracked since
Lowest recorded
$10.00 on

Keywords

UI Toolkit: Data Binding

by KrookedLilly (opens in new tab)

No ratings yet

One-line bindings, reactive properties, async commands, and computed values for Unity 6 UI Toolkit. Auto-cleanup, live diagnostics window, 4 demos. Zero dependencies.

Price $20.00

Buy on Asset Store (opens in new tab)

Affiliate link · Purchases support this site

Price history

Last 6 months

USD
Price history for UI Toolkit: Data Binding, 6 months Current $20.00; lowest $10.00; highest $20.00 in this period. $0 $10 $20 Jul Aug Sep Oct Nov Version 1.0.1 released 5 Jun 2026 v1.0.1 Version 1.0.2 released 10 Jun 2026

Asset preview

1 / 4

UI Toolkit: Data Binding screenshot 1

UI Toolkit: Data Binding screenshot 1

About this asset

Unity 6 ships a powerful runtime binding system — and 6 to 10 lines of boilerplate to use it. Every property binding needs a path object, a binding object, a converter, and a setter call. Buttons need separate click and enabled wiring. Lists need manual refresh plumbing. Async commands aren't supported. There's no auto-cleanup, no async command pattern, no computed values, no inspector to see what's bound.

This asset is the missing convenience layer. Drop-in extension methods collapse the boilerplate to a single line, reactive properties plug straight into Unity's binding system, and every binding cleans itself up when its element leaves the panel. Compose with Unity's system; don't replace it.

One-line bindings.

label.BindText(vm, vm => vm.Score);
button.BindCommand(vm.SaveCommand);
listView.BindItems(vm.Items, BuildRow);
field.BindValue(vm, vm => vm.Email);

Each line replaces 6 to 10 lines of raw setup. Strongly-typed lambdas mean renaming a property updates the binding automatically — no magic strings, no runtime "path not found" surprises.

Reactive properties that drive your UI.

Wrap any value in a reactive property and bindings update automatically when it changes. Reactive collections drop straight into UI Toolkit list views and refresh on every Add, Remove, or Clear without a single manual refresh call. Computed values derive from other reactive sources and re-evaluate only when their inputs actually change.

Async commands with auto-disable.

Wire a button to an async operation in one call. The button automatically disables while the work runs and re-enables on completion — no more double-submit bugs, no manual enable/disable plumbing. Built-in cancellation token support so long-running operations can be aborted cleanly.

MVVM helpers when you want them.

An optional view-model base class cuts typical view-model code in half: a one-line setter helper, automatic change notifications, and lifecycle hooks for screen-aware view-models. None of it is required — anything compatible with Unity's binding system works as a data source — but the helpers are there when you'd rather not write them yourself.

Auto-cleanup on element detach.

Every binding silently disposes itself when its element leaves the panel. Stop your scene, swap panels, destroy a UIDocument — the bindings tear down, no leaked observers, and you didn't write a single cleanup line. Need explicit control over a binding's lifetime? Hold the returned handle and dispose it yourself.

Auto type conversion.

Bind a number to a label, a bool to a visibility style, or a float to a pixel length — the conversion is automatic. Per-binding format strings handle currency, padding, and decimal places when you need them, without writing a converter class.

Live diagnostics window.

Tools > KrookedLilly > Data Binding Diagnostics opens an editor window listing every live binding with its source, target, and binding path. Use it to track down leaks, debug bindings that aren't firing, and watch the auto-cleanup happen in real time as you tear down panels.

Four demo scenes included.

One-Liner Comparison — side-by-side panels with the raw Unity 6 API on the left (6 lines per binding) and Data Binding on the right (1 line). Both bind to the same counter and increment in sync, so you can see exactly what the convenience layer does. 

MVVM Showcase — a view-model with lifecycle hooks, one-line setters, and a computed property that updates when its source changes. 

Collection ListView — a reactive todo list with Add, Remove, Clear, and Reset buttons plus a live total counter; the list view updates automatically on every change. 

Two-Way Form — a text field, toggle, and slider editing a view-model, with a live preview panel that reflects every change as you type or drag. All four scenes ship with controller scripts, UXML, USS, and configured panel settings.

Plays well with the rest of the UI Toolkit Components suite.

If you own other assets from the suite, open Tools > KrookedLilly > Setup to see the unified integration matrix. Enable any cross-asset integration from that single window — no per-asset menus to hunt through.

With UI Toolkit: Screen Manager — when you navigate between screens, your view-models automatically activate and deactivate in lockstep with the screen lifecycle. The screen's data source is set on enter and the activation/deactivation hooks fire at the right moments — no manual subscription wiring, no leaked observers when screens get destroyed. Adapters self-clean when screens are destroyed.

Works on every platform.

Verified on Mac Standalone IL2CPP. Uses the standard Unity AOT path that runs on iOS, Android, WebGL, and consoles. The included troubleshooting guide covers the rare link.xml adjustment some AOT projects need.

Full C# source, no DLLs.

XML documentation on every public API. Zero external dependencies.

From the publisher's Asset Store listing.

Technical details

Bindings

  • BindText(label, source, x => x.Member) — one-way to UI, with format-string overload
  • BindValue(field, source, x => x.Member) — two-way for TextField, Toggle, Slider, IntegerField
  • BindCommand(button, command) — wires clicked + enabled together
  • BindItems(listView, collection, makeItem, bindItem) — ReactiveCollection → ListView
  • BindVisibility(element, source, x => x.IsShown) — bool to style.display
  • BindClass(element, source, x => x.HasError, "error") — bool to USS class toggle
  • BindTo(element, source, x => x.Member, applyAction) — generic for any element + member
  • Every Bind* returns IDisposable and auto-cleans on DetachFromPanelEvent
  • BindingHandle wraps a single binding for explicit lifetime control
  • BindingRegistry for advanced users tracking handles manually

Reactive

  • ReactiveProperty<T> — mutable, implements INotifyBindablePropertyChanged, optional IEqualityComparer<T> for write-suppression
  • ReadOnlyReactiveProperty<T> — read-only view, exposes encapsulated state to bindings
  • ReactiveCollection<T> — implements both IList<T> and IList; raises CollectionChange<T> events with action enum (Add/Remove/Replace/Move/Reset); plugs into ListView.itemsSource directly
  • Computed.Of(selector, ...deps) — derived value re-evaluating only when deps change
  • Subscribe(Action<T>) returns IDisposable for non-binding observers

Commands

  • ICommand, RelayCommand, RelayCommand<T> — WPF-style synchronous commands
  • AsyncRelayCommand — Awaitable-wrapping with built-in cancellation and IsRunning state
  • Auto-disables bound button while async runs; re-enables on completion or exception
  • CanExecute predicate + CanExecuteChanged event for explicit gating

MVVM

  • ObservableObject — base class with Set<T>(ref field, value) setter helper, manual RaisePropertyChanged, per-property subscription via OnPropertyChanged(name, action)
  • ViewModelBase — adds OnActivate/OnDeactivate hooks for screen-lifecycle adapters
  • IDataSource — marker interface
  • [CreateProperty] per-property — required for Unity's binding system to see the member

Converters

  • Built-in: int/long/float/double/bool → string; bool → DisplayStyle; float → StyleLength
  • Per-binding format-string overload via string.Format
  • ConverterRegistry for buyer-extensible auto-conversions
  • BindingConverter fluent factory for one-off converters

Diagnostics

  • Tools > KrookedLilly > Data Binding Diagnostics editor window
  • Lists every live BindingHandle with source, target, description
  • Reports total active count for leak detection
  • Refreshes on selection change

Editor

  • Tools > KrookedLilly > Setup — unified integration matrix covering every sibling asset in one window
  • All cross-asset integrations ship disabled by default and are enabled per-pair from that single window; no project-wide auto-detection, no manual define editing

Included demos

  • OneLinerComparison — side-by-side raw Unity 6 binding vs Data Binding
  • MvvmShowcase — ViewModelBase lifecycle, ObservableObject.Set, computed-value reaction
  • CollectionListView — ReactiveCollection driving a UITK ListView with mutation buttons + total counter
  • TwoWayForm — BindValue on TextField + Toggle + Slider with VM updates flowing both ways

Compatibility

  • Unity 6+ (6000.0 and newer)
  • UI Toolkit (com.unity.modules.uielements)
  • Mono + IL2CPP (Standalone verified; iOS/Android/WebGL/consoles supported via standard AOT path)
  • Full C# source, no DLLs
  • XML documentation on all public APIs
  • Zero external dependencies

Compatibility

Render pipelines supported in each Unity version
Unity version Built-in URP HDRP Custom
6000.3.10f1 Compatible Compatible Compatible Compatible

As listed on the Asset Store.