如何将WPF按钮绑定到ViewModelBase中的命令?

如何将WPF按钮绑定到ViewModelBase中的命令?,第1张

如何将WPF按钮绑定到ViewModelBase中的命令
 <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();    }}

我希望这会给你这个主意



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5559818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存