WPF 用户控件上无法调用Command得标签可使用事件调用command得方法。如下。

用户控件视图代码:

  <TextBox Name="TextB" Width="364" Height="38" FontSize="24" Background="Transparent" BorderThickness="0"  VerticalContentAlignment="Center" Foreground="#6076AD"   HorizontalAlignment="Left" Text="请输入设备编号"/>

用户控件后台代码:

 private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            var MyVM = DataContext as MainViewModel; string Name = this.TextB.Text.ToString();
            if (MyVM != null && MyVM.ClickCC.CanExecute(null))
           
                MyVM.ClickCC.Execute(Name);
        }

MainViewModel 代码

public RelayCommand ClickCC
        {
            get
            {
                return new RelayCommand((arg) =>
                {
                    MessageBox.Show(arg.ToString());
                });
            }
        }

RelayCommand命令类

 public class RelayCommand : ICommand
    {
        private readonly Action<object> m_execute;
        private readonly Predicate<object> m_canExecute;

        public RelayCommand(Action<object> execute)
        {
            this.m_execute = execute;
        }

        public RelayCommand(Action<object> execute, Predicate<object> canExecute)
        {
            this.m_execute = execute;
            this.m_canExecute = canExecute;
        }

        public bool CanExecute(object parameter)
        {
            if (m_canExecute == null)
                return true;

            return m_canExecute(parameter);
        }

        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        public void Execute(object parameter)
        {
            this.m_execute(parameter);
        }
    } 

猜你喜欢

转载自blog.csdn.net/qq_38341160/article/details/119914623