WPF .Net6框架下, 使用Command 实现控件的事件触发

概述

在wpf项目中,以button为例,除了click 触发点击事件外,还可以通过command特性来实现。
使用这种方式的好处就是:
不必在xaml对应的cs文件里面进行复杂的编辑,可以将其引导至某个ViewModel.cs文件中进行统一处理。

方法

首先,你需要一个MyICommand类

public class MyICommand : ICommand
    {
        Action _TargetExecuteMethod;
        Func<bool> _TargetCanExecuteMethod;

        public MyICommand(Action executeMethod)
        {
            _TargetExecuteMethod = executeMethod;
        }

        public MyICommand(Action executeMethod, Func<bool> canExecuteMethod)
        {
            _TargetExecuteMethod = executeMethod;
            _TargetCanExecuteMethod = canExecuteMethod;
        }

        public void RaiseCanExecuteChanged()
        {
            CanExecuteChanged(this, EventArgs.Empty);
        }

        bool ICommand.CanExecute(object parameter)
        {

            if (_TargetCanExecuteMethod != null)
            {
                return _TargetCanExecuteMethod();
            }

            if (_TargetExecuteMethod != null)
            {
                return true;
            }

            return false;
        }

        public event EventHandler CanExecuteChanged = delegate { };

        void ICommand.Execute(object parameter)
        {
            if (_TargetExecuteMethod != null)
            {
                _TargetExecuteMethod();
            }
        }
    }

然后,在你的ViewModel.cs文件中,通过构造函数使用它


        public MyICommand YourCommand { get; private set; }
        public ViewModel()
        {
            YourCommand = new MyICommand(OnYourCommand );
          
        }
        private void OnYourCommand ()
        {
        //do sth.
        }

最后,在View.xaml中,绑定并应用你的Command方法

注意:这个需要你的xaml能够访问到你的ViewModel.cs,否则会绑定失败。
以下,是将一个button绑定指令ConnectToggleCommand。

  <Button Name="Btn_ConnectDevice" Margin="150,0,0,0" 
                                Command = "{Binding ConnectToggleCommand}"
                                Content="{Binding BtnConnectAttributes.BtnContent}"
                                IsEnabled="{Binding BtnConnectAttributes.IsEnable}"
                                HorizontalAlignment="Left" VerticalAlignment="Center"
                                Width = "150" Height="Auto" Cursor="Hand">
                Button>

这样之后,你就可以通过点击这个Button,触发他的Command指令了。

你可能感兴趣的:(wpf,.net)