我有一个命令(或一段代码),当特定条目失去焦点时,我想运行该命令。
我正在使用MVVM,所以我想使用绑定方式来实现它,而不是在我的Form.xaml.cs
中编写代码。
当条目在XAML
文件中失去焦点时,如何运行命令(或代码段)?
答案 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>