請考慮使用ICommand
接口。該接口包含ICommand.CanExecute Method,用於確定命令是否可以在當前狀態下執行。 ICommand
接口的一個實例可以綁定到Button
實例的Command
屬性。如果命令無法執行,該按鈕將被自動禁用。
的具有RaiseCanExecuteChanged()
樣方法ICommand
接口的實現必須被用來實現所描述的行爲,例如:從棱鏡庫
DelegateCommand
類。
RelayCommand
來自MVVM Light庫。
- 等
的ViewModel
使用DelegateCommand
類從棱鏡庫的實現:
[NotifyPropertyChanged]
public class ActivateViewModel
{
private readonly DelegateCommand activateCommand;
private string password;
public ActivateViewModel()
{
activateCommand = new DelegateCommand(Activate,() => !string.IsNullOrEmpty(Password));
}
public string Password
{
get { return password; }
set
{
password = value;
activateCommand.RaiseCanExecuteChanged(); // To re-evaluate CanExecute.
}
}
public ICommand ActivateCommand
{
get { return activateCommand; }
}
private void Activate()
{
// ...
}
}
XAML代碼:
<Button Content="Activate"
Command="{Binding ActivateCommand}" />
沒有找到關於PostSharp的ICommand
接口向文檔支持,但一個問題:INotifyPropertyChanged working with ICommand?, PostSharp Support。
這應該與PS開箱即用。請,你可以在這裏發佈你的xaml嗎?你使用什麼類型的項目(WPF,Silverlight,WP等)? – 2015-02-27 11:51:34