我已經完全失去了在命令綁定在MVVM使用。我應該如何將我的對象綁定到窗口和/或其控制的命令以獲取在Button
Click
上調用的方法?WPF MVVM:ICommand的綁定的控件
這裏是一個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
方法,但執行不傳遞給方法。我已經看到了很多例子(在stackoverflow上),但無法弄清楚應該如何指定綁定。
請指教,任何幫助將不勝感激。
謝謝。
P.S.也許我需要在按鈕綁定指定RelativeSource
...是這樣的:
Command="{Binding Path=DataContext.Save, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
但類型應始祖指定?
是否有程序的輸出任何有約束力的錯誤?綁定錯誤經常不被發現。你也應該嘗試Snoop。這是一個附加到正在運行的應用程序的工具,也可以發現綁定錯誤。 – Thorsten79 2010-01-19 15:28:33