UserStoppedTypingBehavior

UserStoppedTypingBehavior 是一种 Behavior,当用户停止在控件(例如 EntrySearchBarEditor)输入数据时,它将触发操作。 其用法的示例包括在用户停止输入其搜索查询时触发搜索。

重要

.NET MAUI 社区工具包行为不会设置行为的 BindingContext,因为行为可以通过样式共享,并应用于多个控件。 有关详细信息,请参阅 .NET MAUI 行为

语法

XAML

包括 XAML 命名空间

若要在 XAML 中使用工具包,需要将以下 xmlns 添加到页面或视图中:

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

因此,以下内容:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

将被修改为包括 xmlns,如下所示:

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

使用 UserStoppedTypingBehavior

可以在 XAML 中按如下所示方式使用 UserStoppedTypingBehavior

<ContentPage 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
    x:Class="MyLittleApp.MainPage"
    x:Name="Page">
     
            <Entry 
                Placeholder="Start typing when you stop the behavior will trigger..."
                x:Name="UserStoppedTypingEntry">
                <Entry.Behaviors>
                    <toolkit:UserStoppedTypingBehavior 
                        BindingContext="{Binding Path=BindingContext, Source={x:Reference UserStoppedTypingEntry}, x:DataType=Entry}"
                        Command="{Binding SearchCommand}"
                        StoppedTypingTimeThreshold="1000"
                        MinimumLengthThreshold="3"
                        ShouldDismissKeyboardAutomatically="True" />
                </Entry.Behaviors>
            </Entry>
</ContentPage>

C#

UserStoppedTypingBehavior 可在 C# 中按如下所示方式使用:

class UserStoppedTypingBehaviorPage : ContentPage
{
    public UserStoppedTypingBehaviorPage()
    {
        var behavior = new UserStoppedTypingBehavior()
        {
            StoppedTypingTimeThreshold = 1000,
            MinimumLengthThreshold = 3,
            ShouldDismissKeyboardAutomatically = true
        };

        behavior.SetBinding(UserStoppedTypingBehavior.CommandProperty, 
                                static (ViewModel vm) => vm.SearchCommand,
                                source: this.BindingContext);

        var entry = new Entry
        {
            Placeholder = "Start typing when you stop the behavior will trigger..."
        };

        entry.Behaviors.Add(behavior);
    }
}

C# 标记

我们的 CommunityToolkit.Maui.Markup 包提供一种更简洁的方式来在 C# 中使用此 Behavior

using CommunityToolkit.Maui.Markup;

class UserStoppedTypingBehaviorPage : ContentPage
{
    public UserStoppedTypingBehaviorPage()
    {
        Content = new Entry
        {
            Placeholder = "Start typing when you stop the behavior will trigger..."
        }
        .Behaviors(new UserStoppedTypingBehavior
        {
            StoppedTypingTimeThreshold = 1000,
            MinimumLengthThreshold = 3,
            ShouldDismissKeyboardAutomatically = true
        }.Bind(UserStoppedTypingBehavior.CommandProperty, 
                getter: static (ViewModel vm) => vm.SearchCommand,
                source: this.BindingContext,
                mode: BindingMode.OneTime));
    }
}

属性

属性 类型​​ 描述
命令 ICommand 当用户停止提供输入时要执行的命令。
MinimumLengthThreshold int 执行命令之前所需的输入值的最小长度。
ShouldDismissKeyboardAutomatically 布尔 指示是否应自动关闭键盘。
StoppedTypingTimeThreshold int 执行命令后处于非活动状态的时间(以毫秒为单位)。

示例

可以在 .NET MAUI 社区工具包示例应用程序中查找此行为的示例。

API

可以在 .NET MAUI 社区工具包 GitHub 存储库查看UserStoppedTypingBehavior 的源代码