Skip to content

CalendarView: Automation peer re-enablement #22975

@MartinZikmund

Description

@MartinZikmund

Phase 7 of CalendarView WinUI 3 parity upgrade

Parent tracking issue: (will be linked from epic)

Scope

Re-enable the extensive #if false disabled automation peer code. This is the bulk of disabled code in the codebase and represents the largest gap in accessibility support.

Work items

  • CalendarViewAutomationPeer: Re-enable ISelectionProvider (CanSelectMultipleImpl, IsSelectionRequiredImpl, GetSelectionImpl), IGridProvider (ColumnCountImpl, RowCountImpl, GetItemImpl), ITableProvider (GetColumnHeadersImpl, GetRowHeadersImpl, RowOrColumnMajorImpl), IValueProvider (ValueImpl, IsReadOnlyImpl, SetValueImpl)
  • CalendarViewBaseItemAutomationPeer: Re-enable ColumnSpanImpl, RowSpanImpl, ScrollIntoViewImpl
  • CalendarViewDayItemAutomationPeer: Re-enable ITableItemProvider (column/row header items), ISelectionItemProvider (AddToSelection, RemoveFromSelection, Select, IsSelected), IGridItemProvider (Column, Row)
  • CalendarViewItemAutomationPeer: Re-enable similar providers for year/decade items
  • CalendarScrollViewerAutomationPeer: Complete implementation
  • CalendarViewHeaderAutomationPeer: Add m_currentHeaderPeer/m_previousHeaderPeer tracking

Files to modify

  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewAutomationPeer.cs
  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewBaseItemAutomationPeer.cs
  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewDayItemAutomationPeer.cs
  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewItemAutomationPeer.cs
  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarScrollViewerAutomationPeer.cs
  • src/Uno.UI/UI/Xaml/Controls/CalendarView/CalendarViewHeaderAutomationPeer.h.cs

WinUI source reference

  • All *AutomationPeer_Partial.cpp/.h files in dxaml/xcp/dxaml/lib/

Dependencies

  • Phase 4 (event lifecycle)
  • Phase 6 (virtualization for container lookup)

Risk & Testing

  • Risk: LOW - automation peers don't affect visual runtime behavior. Code is already written, just disabled.
  • Size: Medium-Large PR (~400-600 lines of un-disabled code + interface wiring)
  • Testing: CalendarViewAutomationPeerIntegrationTests.cs (746 lines). Screen reader verification.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions