MAUI 中的事件触发器是一种用于在控件上触发事件并执行指定操作的机制。事件触发器可以通过与控件关联的事件或命令来触发操作,例如单击按钮、选择列表项等等。事件触发器可以用于各种 MAUI 控件,包括 Button、Entry、ListView、Picker 等等。
事件触发器可以用于实现各种复杂的交互效果,例如弹出对话框、执行动画、导航到其他页面等等。通过将事件触发器与命令绑定,我们可以将操作逻辑与界面逻辑分离,并使代码更加模块化和可重用。MAUI 中的事件触发器支持多种事件类型和命令类型,例如 Clicked、ItemSelected、TextChanged 等等。

下面是一个简单的示例:

<ContentPage.Resources>
    <converters:NumericConverter x:Key="NumericConverter" />
</ContentPage.Resources>
<VerticalStackLayout Margin="20">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Entry Grid.Column="1" Placeholder="Enter number" x:Name="entry">
            <Entry.Triggers>
                <EventTrigger Event="TextChanged">
                    <triggeractions:NumericValidationTriggerAction />
                </EventTrigger>
            </Entry.Triggers>
        </Entry>
        <Label Grid.Column="0" Text="!" TextColor="Red" IsVisible="{Binding Source={x:Reference entry},Path=Text,Converter={StaticResource NumericConverter}}" />
    </Grid>
    <Label Text="Enter only numbers." TextColor="Red" IsVisible="{Binding Source={x:Reference entry},Path=Text,Converter={StaticResource NumericConverter}}" />
</VerticalStackLayout>

NumericConverter.cs

public class NumericConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is string text)
        {
            return !Double.TryParse(text, out _);
        }
        return false;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

效果如图:

MAUI 触发器之事件触发器_触发器


上面的代码段定义了一个 Entry(输入框)控件,并添加了一个 TextChanged 事件触发器,当输入框的文本内容发生更改时,会自动调用 NumericValidationTriggerAction 类的 Invoke 方法进行验证,并根据验证结果设置输入框的文本颜色。具体而言,如果输入框的文本内容可以成功解析为 Double 类型,则将文本颜色设置为黑色;否则将文本颜色设置为红色。该验证器可用于限制用户输入的文本内容必须是数字。

接着我们定义了一个名为“NumericConverter”的静态资源,并在界面布局中使用它来绑定一个带有感叹号的标签和一个提示错误消息的标签的可见性。NumericConverter是实现了IValueConverter接口的类,它将输入的字符串转换为布尔值,以指示该字符串是否可以解析为数字。如果输入的字符串不能解析为数字,则将标签和消息设置为可见,否则将它们设置为不可见。在XAML中,StaticResource绑定将在运行时使用已定义的“NumericConverter”资源。

示例代码

EventTriggerPage.xamlNumericValidationTriggerAction.csNumericConverter.cs

参考资料

事件触发器

学习技术最好的文档就是官方文档,没有之一。
还有学习资料Microsoft Learn、【CSharp Learn】、My Note
推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。