私はMVVMの方法でWPFプロジェクトを開発しています。
Observable Collection を XamTabControl にバインドしました。Observable Collection に新しいアイテムを追加すると、新しいタブが生成されます。しかし、タブを閉じても、タブ項目は Observable Collection から削除されません。
タブの Closing Event (または Closed Event) をトリガーできる場合は、これを手動で行うことができます。しかし、これら 2 つのイベントは発生しません。ただし、MouseUp などのいくつかのイベントが発生します。
<igWindows:XamTabControl 
 Height="198" 
 HorizontalAlignment="Left" 
 Margin="0,54,0,0" 
 ItemsSource="{Binding Tabs}"
 SelectedItem="{Binding SelectedTab}"
 Name="xamTabControl1" 
 VerticalAlignment="Top" 
 Width="651">
     <i:Interaction.Triggers>
           <i:EventTrigger EventName="Closing">
                <i:InvokeCommandAction Command="{Binding TabCloseCommand}" />
           </i:EventTrigger>
      </i:Interaction.Triggers>
     <igWindows:XamTabControl.ItemContainerStyle>
           <Style TargetType="igWindows:TabItemEx">
                <Setter Property="Header" Value="{Binding Header}"/>
                <Setter Property="CloseButtonVisibility" Value="{Binding CloseButtonVisibility}"/>
           </Style>
      </igWindows:XamTabControl.ItemContainerStyle>
     <igWindows:XamTabControl.ContentTemplate>
          <!-- this is the body of the TabItem template-->
          <DataTemplate>
                <TextBlock Text="{Binding Content}" />
          </DataTemplate>
      </igWindows:XamTabControl.ContentTemplate>
 </igWindows:XamTabControl>
そして、これは私のビューモデルです
private ObservableCollection<TabItem> tabs;
private TabItem selectedTab;
private ICommand tabCloseCommand;
public ObservableCollection<TabItem> Tabs
{
     get
     {
         return tabs;
     }
     set
     {
          tabs = value;
          NotifyPropertyChanged("Tabs");
     }
}
public TabItem SelectedTab
{
     get
     {
          return selectedTab;
     }
     set
     {
          selectedTab = value;
          NotifyPropertyChanged("SelectedTab");
     }
}
public ICommand TabCloseCommand
{
     get
     {
          if (tabCloseCommand == null)
          {
          tabCloseCommand = new RelayCommand(param => this.CloseTab(), null);
          }
          return tabCloseCommand;
      }
}
private void CloseTab()
{
}