<Grid > <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Button Command="{Binding ClickCommand}" Width="100" Height="100" Content="wefwfwef"/></Grid>
窗口后面的代码:
public partial class MainWindow : Window{ public MainWindow() { InitializeComponent(); DataContext = new ViewModelbase(); }}
ViewModel:
public class ViewModelbase{ private ICommand _clickCommand; public ICommand ClickCommand { get { return _clickCommand ?? (_clickCommand = new CommandHandler(() => MyAction(), ()=> CanExecute)); } } public bool CanExecute { get { // check if executing is allowed, i.e., validate, check if a process is running, etc. return true/false; } } public void MyAction() { }}
命令处理程序:
public class CommandHandler : ICommand{ private Action _action; private Func<bool> _canExecute; /// <summary> /// Creates instance of the command handler /// </summary> /// <param name="action">Action to be executed by the command</param> /// <param name="canExecute">A bolean property to containing current permissions to execute the command</param> public CommandHandler(Action action, Func<bool> canExecute) { _action = action; _canExecute = canExecute; } /// <summary> /// Wires CanExecuteChanged event /// </summary> public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } /// <summary> /// Forcess checking if execute is allowed /// </summary> /// <param name="parameter"></param> /// <returns></returns> public bool CanExecute(object parameter) { return _canExecute.Invoke(); } public void Execute(object parameter) { _action(); }}
我希望这会给你这个主意。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)