使用带TabItem的命令

我想在选择TabControl的TabItem时调用Command。

有没有办法在不破坏MVVM模式的情况下完成它?

使用AttachedCommand Behavior ,它允许您将Command绑定到WPF事件

 

当然,如果您正在使用MVVM设计模式并绑定SelectedItemSelectedIndex ,您还可以在PropertyChanged事件中运行该命令

 void MyViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "SelectedIndex") RunTabChangedLogic(); } 

可以一起使用以下类来完成:

  • System.Windows.Interactivity命名空间( System.Windows.Interactivity程序集)中的EventTrigger类。
  • 来自GalaSoft.MvvmLight.Command命名空间的EventToCommand类( MVVM Light Toolkit程序集,例如, GalaSoft.MvvmLight.Extras.WPF4 ):

XAML:

     ... ...  ...  

ViewModel构造函数中创建命令的实例:

 TabSelectionChangedCommand = new RelayCommand(args => { // Command action. }); 

这是我没有GalaSoft.MvvmLight或附加命令行为的方式

       ...  // In my ViewModel public ICommand MyCommand { get { return new RelayCommand((object parameters) => { // Do stuff... }); } }