In .NET MAUI, a DataTrigger that sets a property the user can also change interactively will permanently block that manual change as long as the trigger's condition stays true. This did not happen in Xamarin - it is a MAUI-specific behavior change.
{{Hint|MAUI ranks a value applied by an active DataTrigger'''Symptom:''' A DataTrigger is used to set s Setter higher than a plain manual property write (e.g. the selected tab based on the recorda user's metaclasstap). The initial selection works correctly, but afterwards Every manual write attempt is silently discarded while the user can never manually switch to a different tab - tapping another tab header highlights it, but the content never switches and SelectedIndex silently revertstrigger's condition remains true.}}
'''Cause (short version):''' MAUI ranks In the example below a value applied by an active DataTriggeris used to set the selected tab based on the record's Setter higher than a plain manual property write (e.gmetaclass. The initial selection works correctly, but afterwards the user can never manually switch to a user's tap)different tab. Every manual write attempt is silently discarded while Tapping another tab header highlights it, but the trigger's condition remains true - no errorcontent never switches, no exception, it just never takes effectand SelectedIndex silently reverts.
'''Workaround:''' Do not use DataTrigger for a property that should be data-driven once and then freely user-editable afterwards. Use the existing DataChangedBehavior and SetPropertyAction pattern instead - it performs a single, plain, imperative write the moment the underlying data changes, and never competes with later manual changes.
{| class="wikitable" style="width:100%; table-layout:fixed;"
|-
|}
Result: the tab still auto-selects correctly based on the data, and the user can freely switch tabs afterward.
{{Attention|This is not limited to tab selection. The same problem can occur wherever a DataTrigger, Trigger, MultiTrigger sets a property that a user (or code-behind) is also meant to change afterwards, e.g.:}}
* Code-behind writes executed after the trigger has already applied a value (not just touch input)
'''Rule of thumb:''' when {{Hint|When converting a Xamarin DataTrigger, if the property it sets should remain user-changeable afterwards, convert it into a DataChangedBehavior with SetPropertyAction. Keep DataTrigger/Style.Triggers only for properties that should stay continuously data-driven and don't conflict with user input.}}
{{UnderConstructionEnd}}