如何使用 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}" />
我正在尝试 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):
如何 select 一个选项卡并将其放入 view/focus(就像我用鼠标单击该选项卡一样)?
最终解决方案是默认绑定不符合预期。
<Setter Property="IsSelected" Value="{Binding Model.ContentIsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />