Я полностью потерял привязку команды, которая используется в MVVM. Как мне привязать мой объект к окну и / или его команду к элементу управления, чтобы получить метод, вызываемый для Button
Click
?
Вот класс CustomerViewModel
:
public class CustomerViewModel : ViewModelBase
{
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(), param => this.CanSave);
NotifyPropertyChanged("SaveCommand");
}
return _saveCommand;
}
}
public void Save()
{
...
}
public bool CanSave { get { return true; } }
...
ViewModelBase
реализует интерфейс INotifyPropertyChanged
Вот как Button
привязан к команде:
<Button Content="Save" Margin="3" Command="{Binding DataContext.Save}" />
Экземпляр CustomerViewModel
назначен на DataContext
окна, содержащего Button
.
Данный пример не работает: я поставил точку останова в методе Save
, но выполнение не передается методу. Я видел много примеров (в том числе и над стеком), но не могу понять, как следует указывать привязку.
Пожалуйста, сообщите, любая помощь будет оценена.
Спасибо.
P.S. Вероятно, мне нужно указать RelativeSource
в привязке кнопки ... что-то вроде этого:
Command="{Binding Path=DataContext.Save, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
но какой тип должен быть указан для предка?