Skip to content

Releases: stef-k/MauiControlsExtras

v3.3.6

06 Mar 16:05
99c4b6c

Choose a tag to compare

Fixed

  • All controls: eliminate IL2026 trim warnings at the source by migrating all XAML bindings to compiled bindings (x:DataType), replacing the previous suppression-only approach that was ineffective for consumers (#283)

Changed

  • All controls: remove XC0025 global warning suppression -- compiled bindings are now active across all XAML files

Removed

  • All controls: remove now-unnecessary [UnconditionalSuppressMessage] and [DynamicDependency] attributes from all 17 XAML control constructors (compiled bindings eliminate the need)

Full changelog: v3.3.5...v3.3.6

v3.3.5

05 Mar 17:18
901165a

Choose a tag to compare

Fixed

  • All controls: suppress IL2026 trim warnings from InitializeComponent() across all 17 XAML controls (#283)

The previous fix (v3.3.4) only addressed reflection-based Binding calls in DataGridFilterPopup.SetupItemTemplate(). This release adds [UnconditionalSuppressMessage] to every XAML control constructor, suppressing the remaining false-positive IL2026 warnings emitted during AOT/trimmed publishing.

Full Changelog: v3.3.4...v3.3.5

v3.3.4

04 Mar 16:35
1f40e6a

Choose a tag to compare

Fixed

  • ComboBox: include TranslationX/Y in popup anchor bounds calculation for custom view-switching layouts; dismiss stale overlays before opening new popup (#282)
  • DataGrid: fix IL2026 trim warnings from filter popup bindings (#283)

v3.3.3

02 Mar 17:29
7e84f60

Choose a tag to compare

Fixed

  • DataGrid: Filter popup slow with 500+ distinct values — virtualize with CollectionView, add 100ms search debounce (#280, #281)

v3.3.2

01 Mar 09:07
9d56eae

Choose a tag to compare

Fixed

  • DataGrid: Android long-press context menu not firing when cells have TapGestureRecognizer — MAUI's gesture system prevents native LongClick detection; replaced with Touch-event-based long-press detection using Handler.PostDelayed (#275, #278)

v3.3.1

01 Mar 07:59
2a8f0d8

Choose a tag to compare

What's New

Fixed

  • DataGrid: Fix context menu not showing on Android long-press — use per-cell native LongClick handlers instead of grid-level handlers, which were blocked by TapGestureRecognizer consuming ACTION_DOWN (#275)

v3.3.0

28 Feb 17:26
6719731

Choose a tag to compare

What's New

Added

  • DataGrid: Adaptive auto-virtualization — automatically virtualizes when items exceed 2 screenfuls, with dynamic buffer size (1 screenful per side) based on viewport capacity; small datasets render without virtualization overhead (#268)

Changed

  • DataGrid: Replace per-cell native context menu handlers with grid-level handlers on ScrollViews — reduces ~14,000 event subscriptions to 2 for large datasets (#268)
  • DataGrid: Suppress per-child layout passes during bulk cell creation with BatchBegin/BatchCommit (#268)
  • DataGrid: Reliable Fill column distribution via dataContainer.SizeChanged hook instead of fragile 50ms timer (#268)
  • DataGrid: Call PreMeasureFitHeaderColumns before row creation so FitHeader columns have accurate widths up front (#268)
  • DataGrid: Optimize pagination page changes with in-place cell content updates — preserves Grid containers, gesture recognizers, and native context menu handlers instead of full teardown/rebuild (~5-7x faster) (#268)
  • DataGrid: Enable virtualization + pagination coexistence (#268)
  • DataGrid: Optimize virtualized row recycling with in-place cell updates (#268)
  • DataGrid: Replace O(n) IndexOf in BuildDataRows with pre-built O(1) dictionary lookup (#268)

Fixed

  • DataGrid: Remove AutomationId reassignment crash on reused cells during page navigation (#268)
  • DataGrid: Fix context menu position drift on lower rows (#268)
  • DataGrid: Fix Fill column sizing requiring window maximize (#268)
  • DataGrid: Prevent COMException 0x80004005 in WinUI measure pass (#268)
  • DataGrid: Fix column widths not propagating to virtualized rows (#268)
  • DataGrid: Fix FitHeader columns too narrow on first render (#268)
  • DataGrid: Fix Fill columns not re-expanding on window resize (#268)
  • DataGrid: Fix row selection highlight not showing in virtualized mode (#268)
  • ComboBox: Fix popup appearing on the first ComboBox when a second instance is clicked (#267)
  • ComboBox: Replace StyleId-based wrapper detection with ConditionalWeakTable for cleaner page-wrapper tracking (#267)

Full Changelog: https://github.com/stef-k/MauiControlsExtras/blob/main/CHANGELOG.md

v3.2.0

26 Feb 20:31
54e0683

Choose a tag to compare

Added

  • DataGrid: DataGridColumnSizeMode enum (Auto, Fixed, FitHeader, Fill) for per-column width behavior
  • DataGrid: DataGridColumn.SizeMode property — FitHeader sizes to header text, Fill distributes remaining space proportionally

Fixed

  • Build: Achieve zero-warning Release build — suppress XC0025/CsWinRT1030 globally, add IL3050 per-method suppressions for reflection fallbacks, fix broken XML doc cref references
  • AOT/Trimming: Eliminate IL2026 trim warnings from Binding constructor — migrate internal self-bindings to expression-based SetBinding and suppress intentional reflection fallbacks (#259)
  • DataGrid: Fix StackOverflowException crash when using Fill column sizing mode — re-entrant SizeChanged on WinUI caused infinite recursion during column width distribution
  • Theming: Controls now respond to MAUI RequestedThemeChanged, fixing theme-dependent properties not updating when toggling UserAppTheme at runtime (#258)

v3.1.1

25 Feb 22:22
0523c65

Choose a tag to compare

Added

  • Docs: Centralized AOT & Trimming guide (docs/aot.md) with Func-based property reference table, code examples, and links to per-control sections

Full Changelog: v3.1.0...v3.1.1

v3.0.0 — AOT/Trimming Safety

24 Feb 22:58
47609a0

Choose a tag to compare

What's New

Full AOT and trimming safety for all 15 controls.

Added

  • AOT/Trimming: Enabled IsTrimmable, IsAotCompatible, and EnableTrimAnalyzer in the library project
  • ComboBox: DisplayMemberFunc, ValueMemberFunc, IconMemberFunc — AOT-safe alternatives to string-based property paths
  • MultiSelectComboBox: DisplayMemberFunc — AOT-safe alternative to DisplayMemberPath
  • TreeView: DisplayMemberFunc, ChildrenFunc, IconMemberFunc, IsExpandedFunc, HasChildrenFunc — AOT-safe alternatives to string-based property paths
  • DataGridColumn: CellValueFunc, CellValueSetter — AOT-safe alternatives to reflection via PropertyPath
  • DataGridComboBoxColumn: DisplayMemberFunc, SelectedValueFunc — AOT-safe alternatives to string-based property paths
  • PropertyGrid: RegisterMetadata<T>() / RegisterMetadata(Type, ...) for AOT-safe property discovery via PropertyMetadataRegistry
  • Helpers: PropertyAccessor — centralized, cached reflection helper with [RequiresUnreferencedCode] annotations
  • Helpers: PropertyMetadataRegistry / PropertyMetadataEntry for registering AOT-safe property metadata

Breaking Changes

  • PropertyGrid: PropertyItem.PropertyInfo changed from public to internal — use GetValue/SetValue methods or register metadata via PropertyMetadataRegistry
  • PropertyGrid: PropertyItem constructors changed to internal — use PropertyMetadataRegistry for AOT-safe property item creation

Backward Compatibility

All changes are fully backward compatible for non-PropertyGrid consumers. Existing code using string-based property paths continues to work via the reflection fallback (JIT mode). The new Func properties are optional.

Full Changelog: https://github.com/stef-k/MauiControlsExtras/blob/main/CHANGELOG.md