如何在MAUI页面加载时触发DataTrigger验证?
页面加载时触发TextValidationBehavior验证的解决方案
要让页面加载时就触发验证,直接显示错误样式,有两种简单可行的方法:
方法1:修改ValidationBehavior的Flags属性
TextValidationBehavior的Flags属性支持多值组合,添加ValidateOnAttached标记后,控件附加到页面时会自动执行一次验证。
修改后的XAML代码如下(重点看Flags的变化):
<Frame WidthRequest="350"> <StackLayout Orientation="Horizontal"> <Entry Style="{StaticResource Key=EntryInverted}" Placeholder="Last Name" Text="{Binding LastName}"> <Entry.Behaviors> <toolkit:TextValidationBehavior x:Name="LastNameVal" InvalidStyle="{StaticResource InvalidEntryStyle}" Flags="ValidateOnValueChanged, ValidateOnAttached" MinimumLength="2" MaximumLength="99" /> </Entry.Behaviors> </Entry> </StackLayout> <Frame.Style> <Style TargetType="Frame" BasedOn="{StaticResource Key=EntryFrame}"> <Setter Property="BorderColor" Value="White"/> <Style.Triggers> <DataTrigger TargetType="Frame" Binding="{Binding Source={x:Reference LastNameVal}, Path=IsNotValid}" Value="True"> <Setter Property="BorderColor" Value="{StaticResource FrameErrorBorder}" /> </DataTrigger> </Style.Triggers> </Style> </Frame.Style> </Frame>
方法2:手动在页面加载时触发验证
如果第一种方法不符合你的需求,可以在页面的OnAppearing方法中手动调用验证方法:
后台代码示例:
protected override void OnAppearing() { base.OnAppearing(); LastNameVal?.Validate(); }
原理说明
你原来的代码只设置了ValidateOnValueChanged,只有当Entry的Text值发生变化时才会触发验证。页面加载初期Text为空且没有变化,所以不会执行验证。添加ValidateOnAttached或手动调用Validate(),就能在页面加载时强制执行一次验证逻辑,让错误样式立即显示。
内容的提问来源于stack exchange,提问作者BuckBuchanan
相关产品推荐
相关产品推荐

