如何使用 AvalonDock select 标签

How to select tabs with AvalonDock

我正在尝试 select AvalonDock 中的选项卡(在 LayoutDocumentPaneGroup 和 LayoutAnchorablePane 中)。这看起来应该是一件容易的事,但我正在努力寻找有关该主题的任何文档。到目前为止,我得到的最好的是 select 初始选项卡的能力(见下文),但在初始加载后更改绑定 属性 时,此绑定似乎不会持续存在。

    <dock:DockingManager Name="DockingManager" Grid.Row="2" 
                         AnchorablesSource="{Binding Anchorables}" 
                         DocumentsSource="{Binding Documents}" 
                         DocumentClosed="DockingManager_DocumentClosed"
                         DocumentClosing="DockingManager_DocumentClosing"
                         Loaded="DockingManager_Loaded" 
                         MouseUp="DockingManager_MouseUp">
        <dock:DockingManager.LayoutItemContainerStyle>
            <Style TargetType="{x:Type dockctrl:LayoutItem}" >
                <Setter Property="Title" Value="{Binding Model.Title}" />
                <Setter Property="CloseCommand" Value="{Binding Model.CloseCommand}" />
                <Setter Property="CanClose" Value="{Binding Model.CanClose}" />
                <Setter Property="IsSelected" Value="False" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Model.Title}" Value="Resources">
                        <Setter Property="IsSelected" Value="True" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </dock:DockingManager.LayoutItemContainerStyle>

        <dock:LayoutRoot>
            <dock:LayoutPanel Orientation="Horizontal">

                <dock:LayoutAnchorablePaneGroup x:Name="leftAnchorableGroup" DockWidth="300" >
                    <dock:LayoutAnchorablePane  />
                </dock:LayoutAnchorablePaneGroup>

                <dock:LayoutPanel Orientation="Vertical">
                    <dock:LayoutPanel Orientation="Horizontal">
                        <dock:LayoutDocumentPaneGroup x:Name="leftDocumentGroup">
                            <dock:LayoutDocumentPane />
                        </dock:LayoutDocumentPaneGroup>
                    </dock:LayoutPanel>
                </dock:LayoutPanel>

            </dock:LayoutPanel>
        </dock:LayoutRoot>
    </dock:DockingManager>

但是,如果我替换这些行:

<Setter Property="IsSelected" Value="False" />
<Style.Triggers>
    <DataTrigger Binding="{Binding Model.Title}" Value="Resources">
        <Setter Property="IsSelected" Value="True" />
    </DataTrigger>
</Style.Triggers>

与:

<Setter Property="IsSelected" Value="{Binding Model.ContentIsSelected" />

...当我更改 ContentIsSelected 的值时它不起作用。我可以看到(使用 Snoop)ContentIsSelected 本身的值实际上在变化,但 IsSelected 不会随之变化?!

我还发现了另一个问题(这让我尝试使用 IsSelected): 但是我不完全确定如何以编程方式访问 LayoutItems 超出 XAML 中的绑定。我尝试了 DockingManager.GetLayoutItemFromModel() 函数,但无法将其设置为 return 除了 NULL 之外的任何值。

如何 select 一个选项卡并将其放入 view/focus(就像我用鼠标单击该选项卡一样)?

最终解决方案是默认绑定不符合预期。

<Setter Property="IsSelected" Value="{Binding Model.ContentIsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />