如何将命令绑定到Xamarin Forms中的条目“ Unfocused”事件

时间:2019-01-30 07:00:53

标签: xaml xamarin xamarin.forms prism

我有一个命令(或一段代码),当特定条目失去焦点时,我想运行该命令。

我正在使用MVVM,所以我想使用绑定方式来实现它,而不是在我的Form.xaml.cs中编写代码。

当条目在XAML文件中失去焦点时,如何运行命令(或代码段)?

2 个答案:

答案 0 :(得分:5)

Xamarin.Forms示例(see here)中有一个EventToCommandBehavior的示例。使用此功能,您可以绑定控件

<Entry>
    <Entry.Behaviors>
        <behaviors:EventToCommandBehavior 
            EventName="Unfocused" 
            Command="{Binding EntryUnfocused}" />
    </Entry.Behaviors>
</Entry>

然后在特定视图的EntryUnfocused文件类中定义viewmodel.cs,如下所示:

public class LoginViewModel : XamarinViewModel
{
    public ICommand EntryUnfocused{ get; protected set; } 
    public LoginViewModel()
    {
        EntryUnfocused= new Command(CompletedCommandExecutedAsync);
    }

    private void CompletedCommandExecutedAsync(object param)
    {
     //yourcode...
    }
}

如果您使用的是Prism库,则可以使用它们的实现,它的实现会更加成熟(允许您通过指定应传递的参数来映射事件参数)see here

请注意,您必须将行为所在的相应命名空间添加到XAML文件中。)

答案 1 :(得分:1)

如果您使用 Xamarin Community Toolkit,则可以使用已有的 EventToCommandBehavior

使用它与 Paul Kertscher 的回答相同。

添加到您的控件标题:

xmlns:toolkit="http://xamarin.com/schemas/2020/toolkit"

在您的 Entry 中绑定到命令:

<Entry.Behaviors>
    <toolkit:EventToCommandBehavior
        EventName="Unfocused"
        Command="{Binding EntryUnfocused}" />
</Entry.Behaviors>