Я пытаюсь выбрать вкладки (оба в LayoutDocumentPaneGroup и LayoutAnchorablePane) в AvalonDock. Кажется, что это должна быть легкая задача, но я изо всех сил пытаюсь найти документацию по этому вопросу. Пока лучшее, что я получил, это возможность выбрать начальную вкладку (см. Ниже), но эта привязка, похоже, не сохраняется при изменении связанного свойства после начальной загрузки.Как выбрать вкладки с AvalonDock
<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): How to switch between document tabs in AvalonDock 2 Однако «не совсем уверен, как программно получить доступ к LayoutItems за привязки в XAML. Я попробовал функцию DockingManager.GetLayoutItemFromModel(), но не смог заставить ее возвращать ничего, кроме NULL.
Как выбрать вкладку и привести ее в поле зрения/фокус (как если бы я нажимал вкладку с помощью мыши)?