(如何)删除'文件'来自Avalondock的收藏馆?

时间:2016-03-18 15:31:54

标签: c# wpf mvvm mvvm-light avalondock

我有'如何'在括号中,因为我不确定是否必须这样做。

请考虑以下事项:

我有一个带有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.

  • 如果我关闭A,C就会关闭。
  • 如果我关闭B,C就会关闭它。
  • 如果我关闭C,B就会关闭。

我应该如何实现这一点,以便只有我点击关闭按钮的标签才会关闭?

我已经看到了一些基础集合没有删除工作空间的示例,但是在这个应用程序中,我需要能够删除已关闭的工作空间,因为我希望只允许一些工作空间打开一次。

更新:这似乎是解决实际删除哪个TabItem的问题。如果正在关闭的标签不是所选项目,那就是它删除其中两个标签的原因。问题是,我该如何判断哪个标签正在关闭?

0 个答案:

没有答案