0
我想創建一個利用命令的WPF應用程序,但我遇到了啓用菜單按鈕的命令問題。我正在做一些簡單的驗證,在這種情況下,「保存」按鈕被禁用,直到用戶創建一個新文檔或加載一個現有的文檔。WPF MVVM和命令
比方說我的視圖模型看起來是這樣的,其中視圖模型將繼承INotifyPropertyChanged的對象:
public ViewModel()
{
New = new RelayCommand(OnNew, CanNew);
Save = new RelayCommand(OnSave, CanSave);
}
ICommand m_cmdNew;
public ICommand New
{
get { return m_cmdNew; }
set
{
m_cmdNew = value;
OnPropertyChanged("New");
}
}
void OnNew(object param)
{
bCanSave = true;
// I read that this could resolve my problem.
CommandManager.InvalidateRequerySuggested();
}
bool CanNew( object param)
{
return true;
}
讓我們假設我在做同樣的事情爲「保存」命令爲好,唯一的例外是「CanSave 「是這樣的:
bool CanSave(object param)
{
return bCanSave;
}
我的XAML:
<Menu>
<MenuItem Header="Text">
<MenuItem Header="New" Command="{Binding New}"/>
<MenuItem Header="Save" Command="{Binding Save}"/>
</MenuItem>
</Menu>
的我遇到的問題是在更改變量「bCanSave」後,CanSave方法從未被調用。我怎樣才能做到這一點?我知道我可以簡單地創建一個屬性,並使用INotifyPropertyChanged和XAML綁定,我可以簡單地切換IsEnabled屬性,但是從我閱讀的內容來看,這看起來像很多工作,命令已經這樣做了。