次の方法で共有


MaxLengthReachedBehavior

MaxLengthReachedBehavior は、ユーザーが InputView で許可されている最大長に達したときに、ユーザーがアクションをトリガーできるようにする Behavior です。 ユーザーの優先シナリオに応じて Command またはイベントのいずれかをトリガーできます。 Command とイベントのどちらにも、InputView の結果のテキストが含まれます。

さらに、false を既定値とする ShouldDismissKeyboardAutomatically プロパティを使用して、最大長に達したときにキーボードを閉じることができます。

重要

.NET MAUI Community Toolkit のビヘイビアーでは、ビヘイビアーの 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>

MaxLengthReachedBehavior の使用

MaxLengthReachedBehavior は、XAML では次のように使用できます。

<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="CommunityToolkit.Maui.Sample.Pages.Behaviors.MaxLengthReachedBehaviorPage"
    x:Name="Page">

    <Entry Placeholder="Start typing until MaxLength is reached..."
           MaxLength="100"
           x:Name="MaxLengthEntry">
        <Entry.Behaviors>
            <toolkit:MaxLengthReachedBehavior
                BindingContext="{Binding Path=BindingContext, Source={x:Reference MaxLengthEntry}, x:DataType=Entry}"
                Command="{Binding Source={x:Reference Page}, Path=BindingContext.MaxLengthReachedCommand, x:DataType=ContentPage}" />
        </Entry.Behaviors>
    </Entry>

</ContentPage>

C#

MaxLengthReachedBehavior は、C# では次のように使用できます。


class MaxLengthReachedBehaviorPage : ContentPage
{
    public MaxLengthReachedBehaviorPage()
    {
        var entry = new Entry
        {
            Placeholder = "Start typing until MaxLength is reached...",
            MaxLength = 100
        };

        var behavior = new MaxLengthReachedBehavior();
        behavior.SetBinding(
            MaxLengthReachedBehavior.CommandProperty,
            static (MaxLengthReachedBehaviorViewModel vm) => vm.MaxLengthReachedCommand,
            source: this.BindingContext);

        entry.Behaviors.Add(behavior);

        Content = entry;
    }
}

C# Markup

この CommunityToolkit.Maui.Markup パッケージを使うと、より簡潔な方法でこの Behavior を C# で使用できます。

using CommunityToolkit.Maui.Markup;

class MaxLengthReachedBehaviorPage : ContentPage
{
    public MaxLengthReachedBehaviorPage()
    {
        Content = new Entry
        {
            Placeholder = "Start typing until MaxLength is reached...",
            MaxLength = 100
        }.Behaviors(
            new MaxLengthReachedBehavior()
            .Bind(MaxLengthReachedBehavior.CommandProperty,
                getter: static (ViewModel vm) => vm.MaxLengthReachedCommand,
                source: this.BindingContext));
    }
}

Properties

プロパティ タイプ 説明
Command ICommand ユーザーが最大長に達したときに実行されるコマンド。 このコマンドのパラメーターには、InputViewText が含まれます。
ShouldDismissKeyboardAutomatically bool 最大長に達したときにキーボードを自動的に閉じるかどうかを示します。

Events

Event 説明
MaxLengthReached ユーザーが最大長に達したときに発生するイベント。 イベント引数には、InputViewText が含まれます。

このビヘイビアーの動作の例は .NET MAUI Community Toolkit サンプル アプリケーションで確認できます。

API

MaxLengthReachedBehavior のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。