我试图在AvalonDock中选择制表符(在LayoutDocumentPaneGroup和LayoutAnchorablePane中)。这似乎应该是一项简单的任务,但我很难找到有关该主题的任何文档。到目前为止,我所获得的最好的是能够选择初始选项卡(见下文),但在初始加载后更改绑定属性时,此绑定似乎不会持久。
<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以外的任何内容。
如何选择标签并将其置于视图/焦点中(就像我用鼠标点击标签一样)?
答案 0 :(得分:2)
最终解决方案是默认绑定不符合预期。
<Setter Property="IsSelected" Value="{Binding Model.ContentIsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />