Skip to content

[Testing] Feature Matrix UITest Cases for Triggers#34152

Merged
kubaflo merged 12 commits intodotnet:inflight/currentfrom
HarishKumarSF4517:harish_feature_matrix_triggers
Mar 10, 2026
Merged

[Testing] Feature Matrix UITest Cases for Triggers#34152
kubaflo merged 12 commits intodotnet:inflight/currentfrom
HarishKumarSF4517:harish_feature_matrix_triggers

Conversation

@HarishKumarSF4517
Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test cases host app, providing a comprehensive set of pages and view models to explore, demonstrate, and test various trigger types in .NET MAUI. The main changes include the addition of new pages for triggers, a robust view model supporting multiple trigger types, supporting converters and trigger actions, and updates to the test categories.

New Triggers Feature Matrix:

  • Added a new entry for "Triggers Feature Matrix" to the list of gallery pages in CorePageView.cs, making the new triggers demo accessible from the app's main navigation.

  • Introduced TriggersControlPage, TriggersControlMainPage, and TriggersOptionsPage (with XAML and code-behind), providing navigation, UI, and options for selecting and demonstrating 10 different trigger types. This includes logic for resetting state, updating UI based on device orientation and platform, and handling navigation between pages. [1] [2] [3]

  • Added TriggersViewModel to manage state and behavior for all trigger demos, including properties for each trigger type, input validation, and reset logic. Also introduced several value converters and trigger actions (e.g., FadeTriggerAction, NumericValidationTriggerAction, and string converters) to support advanced trigger scenarios in the UI.

  • Added a new test category constant Triggers to UITestCategories, enabling automated or manual test tagging for the new triggers feature matrix.

These changes collectively provide a robust foundation for testing and demonstrating trigger functionality in the MAUI controls test suite.

Screen.Recording.2026-02-20.at.6.00.55.PM.mov

@dotnet-policy-service dotnet-policy-service bot added community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration labels Feb 20, 2026
@Ahamed-Ali Ahamed-Ali added area-xaml XAML, CSS, Triggers, Behaviors area-testing Unit tests, device tests labels Feb 20, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review February 20, 2026 14:26
Copilot AI review requested due to automatic review settings February 20, 2026 14:26
@sheiksyedm
Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request introduces a comprehensive "Triggers Feature Matrix" to the .NET MAUI test suite, providing both demonstration and testing capabilities for 10 different trigger types in MAUI. The implementation includes a well-structured HostApp demonstration page with XAML-based examples, a robust ViewModel with supporting converters and trigger actions, and comprehensive NUnit/Appium UI tests with screenshot verification.

Changes:

  • Added new Triggers Feature Matrix gallery entry accessible from the main navigation
  • Implemented TriggersControlPage with XAML and code-behind for 10 trigger type demonstrations
  • Created TriggersViewModel with INotifyPropertyChanged support and helper converters/actions
  • Added 17 NUnit UI tests with screenshot verification for trigger functionality
  • Updated UI test pipeline configuration to include the new "Triggers" category

Reviewed changes

Copilot reviewed 9 out of 41 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
UITestCategories.cs Added new "Triggers" constant for test categorization
TriggersFeatureTests.cs Comprehensive UI test suite with 17 tests covering all trigger types
TriggersViewModel.cs ViewModel with properties, converters, trigger actions, and enum definitions
TriggersOptionsPage.xaml/.cs Options page for selecting trigger types to demonstrate
TriggersControlPage.xaml/.cs Main page with 10 trigger demonstrations and event handlers
CorePageView.cs Added gallery entry for Triggers Feature Matrix
ui-tests.yml Added "Triggers" category to pipeline test execution
PropertyTrigger_Focused.png Android screenshot baseline for focused state
PropertyTrigger_UnFocused.png Android screenshot baseline for unfocused state

@sheiksyedm
Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 2, 2026

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 34152

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 34152"

@kubaflo
Copy link
Copy Markdown
Contributor

kubaflo commented Mar 10, 2026

🤖 AI Summary

📊 Expand Full Review
🔍 Pre-Flight — Context & Validation
📝 Review SessionAdded ios26 Snapshots · da58a7c

PR: #34152 - [Testing] Feature Matrix UITest Cases for Triggers
Author: HarishKumarSF4517 (community/Syncfusion partner)
Type: New Test Addition (no bug fix - pure feature matrix test coverage)
No Linked Issue

Platforms Affected: All (iOS, Android, Windows, MacCatalyst)
Platform Tested: iOS (as specified)

Files Changed: 41 total

  • Test infrastructure (HostApp): 5 new files
    • FeatureMatrix/Triggers/TriggersControlPage.xaml (+579) - 10 trigger demos
    • FeatureMatrix/Triggers/TriggersControlPage.xaml.cs (+127) - Code-behind with navigation
    • FeatureMatrix/Triggers/TriggersOptionsPage.xaml (+73) - Options page for selecting trigger type
    • FeatureMatrix/Triggers/TriggersOptionsPage.xaml.cs (+29) - Options code-behind
    • FeatureMatrix/Triggers/TriggersViewModel.cs (+246) - ViewModel, converters, trigger actions
  • Test cases: 1 new file
    • TestCases.Shared.Tests/Tests/FeatureMatrix/TriggersFeatureTests.cs (+463) - 17 NUnit UI tests
  • Infrastructure updates:
    • CoreViews/CorePageView.cs (+1) - Gallery registration
    • UITestCategories.cs (+1) - New "Triggers" category
    • eng/pipelines/common/ui-tests.yml (+1/-1) - Pipeline category inclusion
  • Screenshot baselines: 34 PNG files across Android, iOS (ios + ios-26), Mac, Windows

PR Summary

This PR introduces a comprehensive "Triggers Feature Matrix" to the .NET MAUI test suite. It demonstrates and tests 10 different MAUI trigger types:
background color change)
button enabled state)
numeric validation)
button enabled)
fade animations)
grid background via VisualStateManager)
layout orientation)
grid background)
9. DeviceStateTrigger (platform-specific background)
background)

Key Technical Design

  • TriggersControlPage extends NavigationPage (wraps TriggersControlMainPage) to support navigation to options page
  • Tests inherit from _GalleryUITest and navigate to "Triggers Feature Matrix" gallery entry
  • TriggersControlMainPage uses _isReturningFromOptions flag to reset state when returning from options
  • Uses UITestEntry/cursor-hidden controls for stable screenshots
  • Platform exclusions via #if TEST_FAILS_ON_* directives

Platform Exclusions

Test iOS Android Windows Catalyst
( automation) OrientationStateTrigger
AdaptiveTrigger ( screenshot )
AdaptiveTriggerVerifiesElements
DeviceStateTrigger
All others

Reviewer Feedback (Copilot Bot)

All 6 Copilot suggestions were addressed by the author:
returns
returns
3. Comment spacing fix at line 204
4. Comment indentation fix at line 221
can be passed
6. Grammar fix in platform exclusion comment

Fix Candidates Table

# Source Approach Test Result Files Changed Notes
PR PR #34152 Add Triggers Feature Matrix with 17 UI PENDING (Gate) 41 files Pure test addition tests

🚦 Gate — Test Verification
📝 Review SessionAdded ios26 Snapshots · da58a7c

Result PASSED:
Platform: ios (iPhone Xs Simulator, iOS 18.6)
Mode: Pass-only verification (pure test addition PR - no fix to revert)

Test Results

All 17 tests passed:

Test Result Duration
PropertyTriggerChangesBackgroundOnFocus Passed 4s
DataTriggerEnablesButtonWhenTextEntered Passed 4s
EventTriggerValidatesNumericInput Passed 6s
StateTriggerChangesBackgroundOnToggle Passed 2s
CompareStateTriggerChangesBackgroundOnCheck Passed 2s
DeviceStateTriggerShowsPlatformSpecificBackground Passed 2s
OrientationStateTriggerShowsCorrectBackground Passed 2s
AdaptiveTriggerChangesOrientation Passed 3s
MultiTriggerComplexConditions Passed 10s
EnterExitActionsTriggerEntryFocusUnfocus Passed 3s
DataTriggerVerifiesButtonTextAndEntryInput Passed 5s
EventTriggerVerifiesEntryInput Passed 6s
MultiTriggerVerifiesFieldsAndSubmitButton Passed 8s
StateTriggerVerifiesGridLabelTextAfterToggle Passed 3s
CompareStateTriggerVerifiesLabelAfterCheckToggle Passed 3s
PropertyTriggerVerifiesEntryFocusInteraction Passed 3s
AdaptiveTriggerVerifiesWindowSizeLabelAndElements Passed 2s

Passed: 17 / 17

Notes

This is a pure test addition PR (no bug fix). Normal "fail without fix / pass with fix" verification doesn't apply. Tests were verified to PASS with the current PR code, confirming the test infrastructure is correctly implemented and all trigger demonstrations work.


🔧 Fix — Analysis & Comparison
📝 Review SessionAdded ios26 Snapshots · da58a7c

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #34152 Add Triggers Feature Matrix with 17 UI tests for 10 trigger types PASS (Gate) 41 files Pure test addition - no bug fix

Exhausted: N/A
Selected Fix: PR's approach - This is a pure test addition PR. There is no bug fix to improve upon or replace. try-fix exploration is not applicable.

Reason try-fix was skipped

This PR adds new test coverage (HostApp pages + UI tests) for MAUI trigger functionality. There is no existing bug being fixed. The try-fix skill requires:

  1. A broken baseline (reverting a bug fix to get failing tests)
  2. Alternative fix ideas to explore

Neither applies here. The Gate verification confirmed all 17 tests pass with the current code.


📋 Report — Final Recommendation
📝 Review SessionAdded ios26 Snapshots · da58a7c

Final Recommendation: APPROVE

Summary

PR #34152 adds a comprehensive "Triggers Feature Matrix" to the MAUI test suite, covering all 10 major MAUI trigger types with 17 NUnit UI tests and screenshot baselines for Android, iOS, Mac, and Windows. This is a pure test addition PR (community contribution from Syncfusion) with no bug fix involved.

Gate All 17 tests passed on iOS (iPhone Xs, iOS 18.6)PASSED :

What Was Tested

  • 10 trigger types: PropertyTrigger, DataTrigger, EventTrigger, MultiTrigger, EnterActions/ExitActions, StateTrigger, AdaptiveTrigger, CompareStateTrigger, DeviceStateTrigger, OrientationStateTrigger
  • 17 tests covering both screenshot verification and behavioral assertions
  • Platform: iOS (as specified; Android/Mac/Windows snapshots also included in PR)

Root Cause

N/ This PR adds new test coverage, not a bug fix.A

Fix Quality

The test infrastructure is well-implemented:

Strengths:

  • Follows established NavigationPage-based FeatureMatrix pattern (consistent with BorderControlPage, ButtonControlPage, etc.)
  • Uses UITestEntry (cursor-hidden) for stable screenshot comparisons
  • Proper event subscription/unsubscription in OnAppearing/OnDisappearing
  • VerifyScreenshotOrSetException collects failures across multi-step tests
  • State reset logic when returning from options (_isReturningFromOptions flag + ViewModel.Reset())
  • Binding.DoNothing returned from one-way converter ConvertBack methods
  • Platform exclusions via #if TEST_FAILS_ON_* match established patterns
  • All 6 Copilot review suggestions addressed by the author

Minor Observations (non-blocking):

  1. OrientationStateTrigger excluded on Android without issue The #if TEST_FAILS_ON_ANDROID comment says "currently failing on Android in Automation, but can be passed manually." Most #if TEST_FAILS_ON_* exclusions in the codebase reference a GitHub tracking issue. Consider adding one to track the Android automation failure.link

  2. No orientation cleanup on test AdaptiveTriggerChangesOrientation calls App.SetOrientationLandscape() but only restores portrait at the end (not in a finally block). If the test throws between the two orientation calls, subsequent tests run in landscape. This matches patterns elsewhere in the codebase but could cause test flakiness.exception

  3. XAML Title is " The TriggersControlMainPage XAML has Title="TriggersControlPage" instead of something more user-friendly like "Triggers Feature Matrix". This is cosmetic only and doesn't affect tests.TriggersControlPage"

Try-Fix Results

Not This is a pure test addition PR with no bug fix to compare against.applicable

PR Title & Description Accuracy

The PR title "[Testing] Feature Matrix UITest Cases for Triggers" accurately reflects the implementation. The description correctly describes all new components added.

Conclusion

The implementation is thorough, consistent with established FeatureMatrix patterns, and all tests pass on iOS. The community contribution demonstrates good understanding of the MAUI test infrastructure. The minor observations are informational and don't block merge.


📋 Expand PR Finalization Review
Title: ✅ Good

Current: [Testing] Feature Matrix UITest Cases for Triggers

Description: ✅ Good

Description needs updates. See details below.

Code Review: ✅ Passed

Code Review – PR #34152: Triggers Feature Matrix UI Tests

🟡 Suggestions

1. PropertyChanged event not declared nullable

File: src/Controls/tests/TestCases.HostApp/FeatureMatrix/Triggers/TriggersViewModel.cs

// Current
public event PropertyChangedEventHandler PropertyChanged;

// Should be
public event PropertyChangedEventHandler? PropertyChanged;

The event is invoked with the null-conditional operator (?.Invoke), but the declaration itself is not marked nullable. With nullable reference types enabled, this can produce a CS8618 warning. Declaring it as PropertyChangedEventHandler? is the correct pattern.


2. PushAsync called without await in constructor

File: src/Controls/tests/TestCases.HostApp/FeatureMatrix/Triggers/TriggersControlPage.xaml.cs

public TriggersControlPage()
{
    _viewModel = new TriggersViewModel();
    PushAsync(new TriggersControlMainPage(_viewModel)); // fire-and-forget
}

Calling PushAsync in a constructor without await is a fire-and-forget async operation. While this is an established MAUI pattern for NavigationPage subclasses and works in practice, any exceptions during navigation are silently swallowed. This is very common in the codebase (many existing feature matrix pages use this same pattern), so it's low-risk here, but worth noting.


3. Inline #if in test helper methods

File: src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TriggersFeatureTests.cs

private void VerifyScreenshotOrSetExceptionWithCroppingBottom(ref Exception? exception, string? name = null, bool isKeyBoardNotShown = false)
{
#if IOS
    VerifyScreenshotOrSetException(ref exception, name, cropBottom: CropBottomValue, tolerance: 0.5, retryTimeout: TimeSpan.FromSeconds(2));
#elif ANDROID
    if (isKeyBoardNotShown)
        VerifyScreenshotOrSetException(ref exception, name, tolerance: 0.5, retryTimeout: TimeSpan.FromSeconds(2));
    else
        VerifyScreenshotOrSetException(ref exception, name, cropBottom: CropBottomValue, tolerance: 0.5, retryTimeout: TimeSpan.FromSeconds(2));
#else
    VerifyScreenshotOrSetException(ref exception, name, tolerance: 0.5, retryTimeout: TimeSpan.FromSeconds(2));
#endif
}

The UI testing guidelines discourage inline #if directives, preferring platform-specific logic in extension methods. However, here the #if is in private helper methods (not test method bodies), which is an acceptable compromise – it keeps the test method bodies clean and readable. No action required, but be consistent with this pattern across the feature matrix tests.


4. Missing newline at end of UITestCategories.cs

File: src/Controls/tests/TestCases.Shared.Tests/UITestCategories.cs

The diff shows \ No newline at end of file. The file should end with a newline. This is a minor style issue that can be fixed trivially.


5. OrientationStateTriggerShowsCorrectBackground only runs on iOS

File: src/Controls/tests/TestCases.Shared.Tests/Tests/FeatureMatrix/TriggersFeatureTests.cs

#if TEST_FAILS_ON_CATALYST && TEST_FAILS_ON_WINDOWS
#if TEST_FAILS_ON_ANDROID  // excluded from Android, Catalyst, Windows → iOS only
    [Test]
    [Order(7)]
    public void OrientationStateTriggerShowsCorrectBackground()

The comment says "failing on Android in Automation, but can be passed manually." This means the test only runs on iOS. The comment makes the reasoning clear, which is good. No action required – document this known limitation so it can be revisited when the Android issue is resolved.


6. TriggersControlPage and TriggersControlMainPage naming could be confusing

File: src/Controls/tests/TestCases.HostApp/FeatureMatrix/Triggers/TriggersControlPage.xaml.cs

TriggersControlPage is a NavigationPage wrapper; TriggersControlMainPage is the actual ContentPage content. The XAML file is named TriggersControlPage.xaml but its x:Class is TriggersControlMainPage. This is slightly confusing – the file name suggests a single page but it contains two classes. Consider splitting into separate files in a follow-up, or at least adding a comment explaining the architecture.


✅ Looks Good

  • [Category(UITestCategories.Triggers)] at class level – correct per guidelines; no per-test category attribute needed.
  • Snapshot coverage – snapshots provided for all 4 platforms (Android, iOS, iOS-26, Mac, Windows).
  • OnAppearing/OnDisappearing event managementDeviceDisplay.Current.MainDisplayInfoChanged and SizeChanged are properly subscribed and unsubscribed, preventing memory leaks.
  • SelectTriggerType helper method – clean, reusable navigation helper used by all tests.
  • retryTimeout: TimeSpan.FromSeconds(2) on all screenshot assertions – follows best practices for handling animation timing.
  • VerifyScreenshotOrSetException pattern – uses the deferred-exception pattern (collect, then throw) correctly to ensure all screenshots are captured before failing.
  • Gallery registration in CorePageView.cs – correct single-line addition following existing pattern.
  • ui-tests.yml category registrationTriggers added to the test run matrix correctly.
  • 10 trigger types covered – PropertyTrigger, DataTrigger, EventTrigger, MultiTrigger, EnterExitActions, StateTrigger, AdaptiveTrigger, CompareStateTrigger, DeviceStateTrigger, OrientationStateTrigger.
  • Reset() called on returning from options – proper state cleanup between test runs.

@kubaflo kubaflo added s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Mar 10, 2026
@kubaflo kubaflo changed the base branch from main to inflight/current March 10, 2026 11:46
@kubaflo kubaflo merged commit 438bdd3 into dotnet:inflight/current Mar 10, 2026
2 of 11 checks passed
PureWeen pushed a commit that referenced this pull request Mar 11, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Mar 11, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
@PureWeen PureWeen mentioned this pull request Mar 17, 2026
PureWeen pushed a commit that referenced this pull request Mar 19, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Mar 20, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Mar 22, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
PureWeen added a commit that referenced this pull request Mar 24, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 66 commits with various improvements,
bug fixes, and enhancements.


## Activityindicator
- [Android] Implemented material3 support for ActivityIndicator by
@Dhivya-SF4094 in #33481
  <details>
  <summary>🔧 Fixes</summary>

- [Implement material3 support for
ActivityIndicator](#33479)
  </details>

- [iOS] Fix: ActivityIndicator IsRunning ignores IsVisible when set to
true by @bhavanesh2001 in #28983
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] [ActivityIndicator] `IsRunning` ignores `IsVisible` when set to
`true`](#28968)
  </details>

## Button
- [iOS] Button RTL text and image overlap - fix by @kubaflo in
#29041

## Checkbox
- [iOS/MacCatalyst] Fix CheckBox foreground color not resetting when set
to null by @Ahamed-Ali in #34284
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Color of the checkBox control is not properly worked on dynamic
scenarios](#34278)
  </details>

## CollectionView
- [iOS] Fix: CollectionView does not clear selection when SelectedItem
is set to null by @Tamilarasan-Paranthaman in
#30420
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView not being able to remove selected item highlight on
iOS](#30363)
- [[MAUI] Select items traces are
preserved](#26187)
  </details>

- [iOS] CV2 ItemsLayout update by @kubaflo in
#28675
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView CollectionViewHandler2 doesnt change ItemsLayout on
DataTrigger](#28656)
- [iOS CollectionView doesn't respect a change to ItemsLayout when using
Items2.CollectionViewHandler2](#31259)
  </details>

- [iOS][CV2] Fix CollectionView renders large empty space at bottom of
view by @devanathan-vaithiyanathan in
#31215
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] [MacCatalyst] CollectionView renders large empty space at
bottom of view](#17799)
- [[iOS/Mac] CollectionView2 EmptyView takes up large horizontal space
even when the content is
small](#33201)
  </details>

- [iOS] Fixed issue where group Header/Footer template was set to all
items when IsGrouped was true for an ObservableCollection by
@Tamilarasan-Paranthaman in #29144
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Group Header/Footer Repeated for All Items When IsGrouped is
True for ObservableCollection in
CollectionView](#29141)
  </details>

- [Android] Fix CollectionView selection crash with HeaderTemplate by
@NirmalKumarYuvaraj in #34275
  <details>
  <summary>🔧 Fixes</summary>

- [[Bug] [Android] System.ArgumentOutOfRangeException: Index was out of
range. Must be non-negative and less than the size of the collection.
Parameter name: index](#34247)
  </details>

## DateTimePicker
- [iOS] Fix TimePicker AM/PM frequently changes when the app is closed
and reopened by @devanathan-vaithiyanathan in
#31066
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] TimePicker AM/PM frequently changes when the app is closed and
reopened](#30837)
- [Maui 10 iOS TimePicker Strange Characters in place of
AM/PM](#33722)
  </details>

- Android TimePicker ignores 24 hour system setting when using Format
Property - fix by @kubaflo in #28797
  <details>
  <summary>🔧 Fixes</summary>

- [Android TimePicker ignores 24 hour system setting when using Format
Property](#28784)
  </details>

## Drawing
- [iOS, Mac, Windows] GraphicsView: Fix Background/BackgroundColor not
updating by @NirmalKumarYuvaraj in
#31254
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS, Mac, Windows] GraphicsView does not change the
Background/BackgroundColor](#31239)
  </details>

- [iOS] GraphicsView DrawString - fix by @kubaflo in
#26304
  <details>
  <summary>🔧 Fixes</summary>

- [DrawString not rendering in
iOS.](#24450)
- [GraphicsView DrawString not rendering in
iOS](#8486)
- [DrawString doesn't work on
maccatalyst](#4993)
  </details>

- [Android] - Fix Shadow Rendering For Transparent Fill, Stroke (Lines),
and Text on Shapes by @prakashKannanSf3972 in
#29528
  <details>
  <summary>🔧 Fixes</summary>

- [Ellipse Transparency Not Rendered When Drawing Arc Inside the Ellipse
Using GraphicsView on
Android](#29394)
  </details>

- Revert "[iOS, Mac, Windows] GraphicsView: Fix
Background/BackgroundColor not updating (#31254)" by @Ahamed-Ali via
@Copilot in #34508

## Entry
- [iOS 26] Fix Entry MaxLength not enforced due to new multi-range
delegate by @kubaflo in #32045
  <details>
  <summary>🔧 Fixes</summary>

- [iOS 26 - The MaxLength property value is not respected on an Entry
control.](#32016)
- [.NET MAUI Entry Maximum Length not working on iOS and
macOS](#33316)
  </details>

- [iOS] Fixed Entry with IsPassword toggling loses previously entered
text by @SubhikshaSf4851 in #30572
  <details>
  <summary>🔧 Fixes</summary>

- [Entry with IsPassword toggling loses previously entered text on iOS
when IsPassword is
re-enabled](#30085)
  </details>

## Essentials
- Fix for FilePicker PickMultipleAsync nullable reference type by
@SuthiYuvaraj in #33163
  <details>
  <summary>🔧 Fixes</summary>

- [FilePicker PickMultipleAsync nullable reference
type](#33114)
  </details>

- Replace deprecated NetworkReachability with NWPathMonitor on iOS/macOS
by @jfversluis via @Copilot in #32354
  <details>
  <summary>🔧 Fixes</summary>

- [NetworkReachability is obsolete on iOS/maccatalyst
17.4+](#32312)
- [Use NWPathMonitor on iOS for Essentials
Connectivity](#2574)
  </details>

## Essentials Connectivity
- Update Android Connectivity implementation to use modern APIs by
@jfversluis via @Copilot in #30348
  <details>
  <summary>🔧 Fixes</summary>

- [Update the Android Connectivity implementation to user modern
APIs](#30347)
  </details>

## Flyout
- [iOS] Fixed Flyout icon not updating when root page changes using
InsertPageBefore by @Vignesh-SF3580 in
#29924
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Flyout icon not replaced by back button when root page is
changed using
InsertPageBefore](#29921)
  </details>

## Flyoutpage
- [iOS] Flyout Items Not Displayed in RightToLeft FlowDirection in
Landscape - fix by @kubaflo in #26762
  <details>
  <summary>🔧 Fixes</summary>

- [Flyout Items Not Displayed in RightToLeft FlowDirection on iOS in
Landscape Orientation and Hamburger Icon Positioned
Incorrectly](#26726)
  </details>

## Image
- [Android] Implemented Material3 support for Image by @Dhivya-SF4094 in
#33661
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 support for
Image](#33660)
  </details>

## Keyboard
- [iOS] Fix gap at top of view after rotating device while Entry
keyboard is visible by @praveenkumarkarunanithi in
#34328
  <details>
  <summary>🔧 Fixes</summary>

- [Focusing and entering texts on entry control causes a gap at the top
after rotating simulator.](#33407)
  </details>

## Label
- [Android] Support for images inside HTML label by @kubaflo in
#21679
  <details>
  <summary>🔧 Fixes</summary>

- [Label with HTML TextType does not display images on
Android](#21044)
  </details>

- [fix] ContentLabel Moved to a nested class to prevent CS0122 in
external source generators by @SubhikshaSf4851 in
#34514
  <details>
  <summary>🔧 Fixes</summary>

- [[MAUI] Building Maui App with sample content results CS0122
errors.](#34512)
  </details>

## Layout
- Optimize ordering of children in Flex layout by @symbiogenesis in
#21961

- [Android] Fix control size properties not available during Loaded
event by @Vignesh-SF3580 in #31590
  <details>
  <summary>🔧 Fixes</summary>

- [CollectionView on Android does not provide height, width, logical
children once loaded, works fine on
Windows](#14364)
- [Control's Loaded event invokes before calling its measure override
method.](#14160)
  </details>

## Mediapicker
- [iOS/Android] MediaPicker: Fix image orientation when RotateImage=true
by @michalpobuta in #33892
  <details>
  <summary>🔧 Fixes</summary>

- [MediaPicker.PickPhotosAsync does not preserve image
orientation](#32650)
  </details>

## Modal
- [Windows] Fix modal page keyboard focus not shifting to newly opened
modal by @jfversluis in #34212
  <details>
  <summary>🔧 Fixes</summary>

- [Keyboard focus does not shift to a newly opened modal page: Pressing
enter clicks the button on the page beneath the modal
page](#22938)
  </details>

## Navigation
- [iOS26] Apply view margins in title view by @kubaflo in
#32205
  <details>
  <summary>🔧 Fixes</summary>

- [NavigationPage TitleView iOS
26](#32200)
  </details>

- [iOS] System.NullReferenceException at
NavigationRenderer.SetStatusBarStyle() by @kubaflo in
#29564
  <details>
  <summary>🔧 Fixes</summary>

- [System.NullReferenceException at
NavigationRenderer.SetStatusBarStyle()](#29535)
  </details>

- [iOS 26] Fix back button color not applied for NavigationPage by
@Shalini-Ashokan in #34326
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Color not applied to the Back button text or image on iOS
26](#33966)
  </details>

## Picker
- Fix Picker layout on Mac Catalyst 26+ by @kubaflo in
#33146
  <details>
  <summary>🔧 Fixes</summary>

- [[MacOS 26] Text on picker options are not centered on macOS
26.1](#33229)
  </details>

## Progressbar
- [Android] Implemented Material3 support for ProgressBar by
@SyedAbdulAzeemSF4852 in #33926
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 support for
Progressbar](#33925)
  </details>

## RadioButton
- [iOS, Mac] Fix for RadioButton TextColor for plain Content not working
by @HarishwaranVijayakumar in #31940
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButton: TextColor for plain Content not working on
iOS](#18011)
  </details>

- [All Platforms] Fix RadioButton warning when ControlTemplate is set
with View content by @kubaflo in
#33839
  <details>
  <summary>🔧 Fixes</summary>

- [Seeking clarification on RadioButton + ControlTemplate + Content
documentation](#33829)
  </details>

- Visual state change for disabled RadioButton by @kubaflo in
#23471
  <details>
  <summary>🔧 Fixes</summary>

- [RadioButton disabled UI issue -
iOS](#18668)
  </details>

## SafeArea
- [Android] Fix for TabbedPage BottomNavigation BarBackgroundColor not
extending to system navigation bar by @praveenkumarkarunanithi in
#33428
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] TabbedPage BottomNavigation BarBackgroundColor does not
extend to system navigation bar area in Edge-to-Edge
mode](#33344)
  </details>

## ScrollView
- [Android] ScrollView: Fix HorizontalScrollBarVisibility not updating
immediately at runtime by @SubhikshaSf4851 in
#33528
  <details>
  <summary>🔧 Fixes</summary>

- [Runtime Scrollbar visibility not updating correctly on Android and
macOS platforms.](#33400)
  </details>

- Fixed crash when calling ItemsView.ScrollTo on unloaded CollectionView
by @kubaflo in #25444
  <details>
  <summary>🔧 Fixes</summary>

- [App crashes when calling ItemsView.ScrollTo on unloaded
CollectionView](#23014)
  </details>

## Shell
- [Shell] Update logic for iOS large title display in ShellItemRenderer
by @kubaflo in #33246

- [iOS][Shell] Fix navigation lifecycle and back button for More tab (>5
tabs) by @kubaflo in #27932
  <details>
  <summary>🔧 Fixes</summary>

- [OnAppearing and OnNavigatedTo does not work when using extended
Tabbar (tabbar with more than 5 tabs) on
IOS.](#27799)
- [Shell.BackButtonBehavior does not work when using extended Tabbar
(tabbar with more than 5 tabs)on
IOS.](#27800)
- [Shell TabBar More button causes ViewModel command binding
disconnection on back
navigation](#30862)
- [Content page onappearing not firing if tabs are on the more tab on
IOS](#31166)
  </details>

- [iOS 26] Fix tab bar ghosting when navigating from modal to tabbed
Shell content by @SubhikshaSf4851 in
#34254
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Tab bar ghosting issue on iOS 26 (liquid
glass)](#34143)
  </details>

- Fix for Shell tab visibility not updating when navigating back
multiple pages by @BagavathiPerumal in
#34403
  <details>
  <summary>🔧 Fixes</summary>

- [Changing Shell Tab Visibility when navigating back multiple pages
ignores Shell Tab
Visibility](#33351)
  </details>

- [iOS/Mac] Fixed OnBackButtonPressed not firing for Shell Navigation
Bar Button by @Dhivya-SF4094 in
#34401
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] OnBackButtonPressed not firing for Shell Navigation Bar
button](#34190)
  </details>

## Slider
- [iOS] Fix for Slider ThumbImageSource is not centered properly on iOS
26 by @HarishwaranVijayakumar in
#34019
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] Slider ThumbImageSource is not centered
properly](#33967)
  </details>

- [Android] Fix improper rendering of ThumbimageSource in Slider by
@NirmalKumarYuvaraj in #34064
  <details>
  <summary>🔧 Fixes</summary>

- [[Slider] MAUI Slider thumb image is big on
android](#13258)
  </details>

## Stepper
- [iOS] Fix Stepper layout overlap in landscape on iOS 26 by
@Vignesh-SF3580 in #34325
  <details>
  <summary>🔧 Fixes</summary>

- [[.NET10] D10 - Customize cursor position - Rotating simulator makes
the button and label
overlap](#34273)
  </details>

## SwipeView
- [iOS] SwipeView: Honor FontImageSource.Color in SwipeItem icon by
@kubaflo in #27389
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] SwipeView: SwipeItem.IconImageSource.FontImageSource color
value not honored](#27377)
  </details>

## Switch
- [Android] Fix Switch thumb shadow missing when ThumbColor is set by
@Shalini-Ashokan in #33960
  <details>
  <summary>🔧 Fixes</summary>

- [Android Switch Control Thumb
Shadow](#19676)
  </details>

## Toolbar
- [iOS/Mac Catalyst 26] Fix Shell.ForegroundColor not applied to
ToolbarItems by @SyedAbdulAzeemSF4852 in
#34085
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS26] Shell.ForegroundColor is not applied to
ToolbarItems](#34083)
  </details>

- [Android] VoiceOver on Toolbar Item by @kubaflo in
#29596
  <details>
  <summary>🔧 Fixes</summary>

- [VoiceOver on Toolbar
Item](#29573)
- [SemanticProperties do not work on
ToolbarItems](#23623)
  </details>


<details>
<summary>🧪 Testing (11)</summary>

- [Testing] Additional Feature Matrix Test Cases for CollectionView by
@TamilarasanSF4853 in #32432
- [Testing] Feature Matrix UITest Cases for VisualStateManager by
@LogishaSelvarajSF4525 in #34146
- [Testing] Feature Matrix UITest Cases for Clip by @TamilarasanSF4853
in #34121
- [Testing] Feature matrix UITest Cases for Map Control by
@HarishKumarSF4517 in #31656
- [Testing] Feature matrix UITest Cases for Visual Transform Control by
@HarishKumarSF4517 in #32799
- [Testing] Feature Matrix UITest Cases for Shell Pages by
@NafeelaNazhir in #33945
- [Testing] Feature Matrix UITest Cases for Triggers by
@HarishKumarSF4517 in #34152
- [Testing] Refactoring Feature Matrix UITest Cases for CheckBox Control
by @LogishaSelvarajSF4525 in #34283
- Resolve UI test Build Sample failures - Candidate March 16 by
@Ahamed-Ali in #34442
- Fix the failures in the Candidate branch- March 16 by @Ahamed-Ali in
#34453
  <details>
  <summary>🔧 Fixes</summary>

  - [March 16th, Candidate](#34437)
  </details>
- Fixed the iOS 18.5 Candidate failures (March 16,2026) by @Ahamed-Ali
in #34593
  <details>
  <summary>🔧 Fixes</summary>

  - [March 16th, Candidate](#34437)
  </details>

</details>

<details>
<summary>📦 Other (2)</summary>

- Fixed candidate test failures caused by PR #33428. by @Ahamed-Ali in
#34515
  <details>
  <summary>🔧 Fixes</summary>

- [[.NET10] On Android, there's a big space at the top for I, M and N2 &
N3](#34509)
  </details>
- Revert "[iOS] Button RTL text and image overlap - fix (#29041)" in
b0497af

</details>

<details>
<summary>📝 Issue References</summary>

Fixes #2574, Fixes #4993, Fixes #8486, Fixes #13258, Fixes #14160, Fixes
#14364, Fixes #17799, Fixes #18011, Fixes #18668, Fixes #19676, Fixes
#21044, Fixes #22938, Fixes #23014, Fixes #23623, Fixes #24450, Fixes
#26187, Fixes #26726, Fixes #27377, Fixes #27799, Fixes #27800, Fixes
#28656, Fixes #28784, Fixes #28968, Fixes #29141, Fixes #29394, Fixes
#29535, Fixes #29573, Fixes #29921, Fixes #30085, Fixes #30347, Fixes
#30363, Fixes #30837, Fixes #30862, Fixes #31166, Fixes #31239, Fixes
#31259, Fixes #32016, Fixes #32200, Fixes #32312, Fixes #32650, Fixes
#33114, Fixes #33201, Fixes #33229, Fixes #33316, Fixes #33344, Fixes
#33351, Fixes #33400, Fixes #33407, Fixes #33479, Fixes #33660, Fixes
#33722, Fixes #33829, Fixes #33925, Fixes #33966, Fixes #33967, Fixes
#34083, Fixes #34143, Fixes #34190, Fixes #34247, Fixes #34273, Fixes
#34278, Fixes #34437, Fixes #34509, Fixes #34512

</details>

**Full Changelog**:
main...inflight/candidate
KarthikRajaKalaimani pushed a commit to KarthikRajaKalaimani/maui that referenced this pull request Mar 30, 2026
> [!NOTE]
> Are you waiting for the changes in this PR to be merged?
> It would be very helpful if you could [test the resulting
artifacts](https://github.com/dotnet/maui/wiki/Testing-PR-Builds) from
this PR and let us know in a comment if this change resolves your issue.
Thank you!

This pull request introduces a new "Triggers Feature Matrix" to the test
cases host app, providing a comprehensive set of pages and view models
to explore, demonstrate, and test various trigger types in .NET MAUI.
The main changes include the addition of new pages for triggers, a
robust view model supporting multiple trigger types, supporting
converters and trigger actions, and updates to the test categories.

**New Triggers Feature Matrix:**

* Added a new entry for "Triggers Feature Matrix" to the list of gallery
pages in `CorePageView.cs`, making the new triggers demo accessible from
the app's main navigation.

* Introduced `TriggersControlPage`, `TriggersControlMainPage`, and
`TriggersOptionsPage` (with XAML and code-behind), providing navigation,
UI, and options for selecting and demonstrating 10 different trigger
types. This includes logic for resetting state, updating UI based on
device orientation and platform, and handling navigation between pages.
[[1]](diffhunk://#diff-1dde92fa5a7e0d1c1d00111a09fd845128921d83f8a216b79e8ca98e0c9d5ec4R1-R130)
[[2]](diffhunk://#diff-d5e0662fcb71eae9f1ae11ee4b76fff6d2f6fe22fc10d45dff8b49d03b0c4872R1-R73)
[[3]](diffhunk://#diff-e909c23c4947e1bd055b69ba2a4dcf17b6844f25b3b719050f406ca602948024R1-R29)

* Added `TriggersViewModel` to manage state and behavior for all trigger
demos, including properties for each trigger type, input validation, and
reset logic. Also introduced several value converters and trigger
actions (e.g., `FadeTriggerAction`, `NumericValidationTriggerAction`,
and string converters) to support advanced trigger scenarios in the UI.

* Added a new test category constant `Triggers` to `UITestCategories`,
enabling automated or manual test tagging for the new triggers feature
matrix.

These changes collectively provide a robust foundation for testing and
demonstrating trigger functionality in the MAUI controls test suite.



https://github.com/user-attachments/assets/25c3652b-e1bf-4922-a606-e68459543f9d

---------

Co-authored-by: Jakub Florkowski <42434498+kubaflo@users.noreply.github.com>
@github-actions github-actions bot locked and limited conversation to collaborators Apr 10, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-testing Unit tests, device tests area-xaml XAML, CSS, Triggers, Behaviors community ✨ Community Contribution partner/syncfusion Issues / PR's with Syncfusion collaboration s/agent-approved AI agent recommends approval - PR fix is correct and optimal s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants