Короткий ответ: вы не можете.Событие Completed
- это просто событие.Из-за способа работы событий они не подходят для шаблона MVVM.
Существует несколько способов сделать это.Сначала вы можете перехватить событие в своем коде, а затем вызвать код в вашей модели представления, которая находится в вашем свойстве BindingContext
.Несмотря на то, что вы немного отклонились от шаблона MVVM, это способ обойти это.
Другой вариант - создать собственное наследование элемента управления и реализовать новое свойство, которое принимает Command
.Затем вы можете зациклить событие внутри Command
.
Но, вероятно, самое простое решение этого - создать Behavior
, который превратит ваше событие в Command
.Чтобы создать повторно используемый Behavior
, который превратит любое событие в нем в Command
, реализуйте его следующим образом (полную реализацию можно найти по ссылке ниже):
public class EventToCommandBehavior : BehaviorBase<View>
{
public static readonly BindableProperty EventNameProperty =
BindableProperty.Create ("EventName", typeof(string), typeof(EventToCommandBehavior), null, propertyChanged: OnEventNameChanged);
public static readonly BindableProperty CommandProperty =
BindableProperty.Create ("Command", typeof(ICommand), typeof(EventToCommandBehavior), null);
public static readonly BindableProperty CommandParameterProperty =
BindableProperty.Create ("CommandParameter", typeof(object), typeof(EventToCommandBehavior), null);
public static readonly BindableProperty InputConverterProperty =
BindableProperty.Create ("Converter", typeof(IValueConverter), typeof(EventToCommandBehavior), null);
public string EventName { ... }
public ICommand Command { ... }
public object CommandParameter { ... }
public IValueConverter Converter { ... }
...
}
И для вашего Entry
, прикрепите его так:
<Entry Text="{Binding Username}">
<Entry.Behaviors>
<local:EventToCommandBehavior EventName="Completed" Command="{Binding CompletedCommand}" />
</Entry.Behaviors>
</Entry>
Подробнее об этом можно узнать в документации: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/behaviors/reusable/event-to-command-behavior