我有'如何'在括号中,因为我不确定是否必须这样做。
请考虑以下事项:
我有一个带有AvalonDock控件的MVVM应用程序。控制按如下方式实施:
<xcad:DockingManager Grid.Row="1" DocumentsSource="{Binding Workspaces}" Background="White" ActiveContent="{Binding ActiveWorkspace, Mode=TwoWay}">
<xcad:DockingManager.LayoutItemContainerStyle>
<Style TargetType="{x:Type li:LayoutItem}">
<Setter Property="Title" Value="{Binding Model.Header}"/>
</Style>
</xcad:DockingManager.LayoutItemContainerStyle>
<i:Interaction.Triggers>
<i:EventTrigger EventName="DocumentClosed">
<cmd:EventToCommand Command="{Binding CloseWorkspaceCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</xcad:DockingManager>
所有绑定都起作用,但CloseWorkspaceCommand除外,它实现如下:
public RelayCommand CloseWorkspaceCommand
{
get { return _closeWorkspaceCommand ?? (_closeWorkspaceCommand = new RelayCommand(CloseWorkspace)); }
}
void CloseWorkspace()
{
Workspaces.Remove(ActiveWorkspace); RaisePropertyChanged(string.Empty);
}
RaisePropertyChanged
用于其他一些不相关的功能。
现在我遇到了这个问题。假设我打开了3个工作区,让他们称之为A,B和C.
我应该如何实现这一点,以便只有我点击关闭按钮的标签才会关闭?
我已经看到了一些基础集合没有删除工作空间的示例,但是在这个应用程序中,我需要能够删除已关闭的工作空间,因为我希望只允许一些工作空间打开一次。
更新:这似乎是解决实际删除哪个TabItem的问题。如果正在关闭的标签不是所选项目,那就是它删除其中两个标签的原因。问题是,我该如何判断哪个标签正在关闭?