You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:30:44