Вы должны привязать свойства вида к модели вида. Затем передайте модель представления в качестве параметра команды и измените все, что вы хотите изменить в команде, и привязка данных автоматически обновит представление.
Пример:
<Button Command="{Binding SomeCommand}"
Text="{Binding Text}">
</Button>
public class StudentViewModel
{
public StudentViewModel( Student student )
{
_text = $"Kick {student.Name}";
SomeCommand = new DelegateCommand( () => {
Text = "I have been kicked"
student.Exmatriculate();
SomeCommand.RaiseCanExecuteChanged();
},
() => student.IsMatriculated
);
}
public DelegateCommand SomeCommand { get; }
public string Text
{
get => _text;
set => SetProperty( ref _text, value );
}
private string _text;
}
Как уже отмечалось в комментариях, никогда не требуется передавать представление в модель представления . Для меня это выглядит так, как будто у вас нет модели представления в первую очередь, так как ваш код упоминает только Student
(что, скорее всего, является частью модели), в то время как StudentViewModel
не встречается , Знаешь, ты не привязываешься к модели напрямую , если это не тривиальный игрушечный проект.