Доступ к представлению из модели представления действительно "против" принципа MVVM.Итак, вы правы в этом!Связывание Command
не так сложно и работает так же, как и любое другое связывание, которое вы могли бы использовать.
В вашей модели представления просто определите свойство для Command
:
public class YourViewModel
{
public Command YourCommand { get; set; }
}
Затем в конструкторе определите логику, которая должна быть выполнена:
public YourViewModel()
{
YourCommand = new Command(() =>
{
Console.WriteLine("TADA!");
});
}
Конечно, вы можете определить, что это отдельный метод, или объявить его другим способом.Для краткости я пока что сделал это встроенным.
Чтобы связать его с XAML, просто выполните:
<Button Text="Make it so!" Command="{Binding YourCommand}" />
и убедитесь, что вы установили свойство BindingContext
в своемстраница для просмотра модели.Если вы используете инфраструктуру MVVM, возможно, вы уже сделали это.
В какой-то момент вам, вероятно, захочется привязать ячейку в ListView
или аналогичном.В этом случае имейте в виду, что объем меняется.Затем вы привязываетесь к модели представления за этой ячейкой, а не к странице.Таким образом, вам нужно будет сделать ссылку на страницу, чтобы достичь этого BindingContext
.Но пересеките этот мост, когда попадете туда, просто помните, что в этом есть что-то особенное.