大家早上好!
我在一个项目中使用AvalonDock,最后我有一个问题:
在我的项目中开发的一些页面中,我有使用标准textBlock的自定义标题。在一些页面中,我在页面的左侧锚定了一个LayoutAnchorable,在右侧锚定了一个LayoutDocument。
对于LayoutDocument,标题是空的,因为我在这个页面上已经有了一个标题。这会导致此LayoutDocument选项卡的标题( TabItem )仍然显示为空值。因为我想在所有页面上保留我的标题,我想知道是否可以隐藏或删除这个空白的tabItem,也就是标题。我的一个尝试是修改页面的页边距,我让她保持页面。但是这个LayoutDocument TabItem是向下调整的,保持它的可见性。
我知道这不是一个问题的AvalonDock,是一个不同的行为的原始设计。文档的标签标题不是要隐藏的,但我认为对于那些想要有自己的标题页的人来说,这会很有趣。诚挚的问候。
古斯塔沃。
发布于 2012-11-09 16:49:32
在2.0之前的AvalonDock版本中,有一个属性可以做您想做的事情。那是DocumentPane.ShowHeader
在2.0中,要么重写整个DockingManager样式,要么修改AvalonDock。
我在问题跟踪器中为此创建了一个问题,并附加了一个补丁,您可以下载该补丁,以便再次提供功能。
此补丁是针对以前的版本制作的,如果您将其应用于当前版本,则可能需要进行一些调整。此外,它不处理自那时以来发布的新主题。
http://avalondock.codeplex.com/workitem/15626
补丁:
Index: AvalonDock/AvalonDock.Theme.VS2010/Theme.xaml
===================================================================
--- AvalonDock/AvalonDock.Theme.VS2010/Theme.xaml (revision 96146)
+++ AvalonDock/AvalonDock.Theme.VS2010/Theme.xaml (working copy)
@@ -93,7 +93,9 @@
</Grid.RowDefinitions>
<!--Following border is required to catch mouse events-->
<Border Background="Transparent" Grid.RowSpan="2"/>
- <Grid Panel.ZIndex="1">
+ <Grid Grid.Row="0"
+ Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type avalonDockControls:LayoutDocumentPaneControl}}, Path=Model.ShowHeader, Converter={StaticResource BoolToVisibilityConverter}}"
+ Panel.ZIndex="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
Index: AvalonDock/AvalonDock.Themes.Aero/Theme.xaml
===================================================================
--- AvalonDock/AvalonDock.Themes.Aero/Theme.xaml (revision 96146)
+++ AvalonDock/AvalonDock.Themes.Aero/Theme.xaml (working copy)
@@ -38,7 +38,9 @@
</Grid.RowDefinitions>
<!--Following border is required to catch mouse events-->
<Border Background="Transparent" Grid.RowSpan="2"/>
- <Grid Panel.ZIndex="1" >
+ <Grid Grid.Row="0"
+ Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type avalonDockControls:LayoutDocumentPaneControl}}, Path=Model.ShowHeader, Converter={StaticResource BoolToVisibilityConverter}}"
+ Panel.ZIndex="1" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
Index: AvalonDock/AvalonDock/Layout/LayoutDocumentPane.cs
===================================================================
--- AvalonDock/AvalonDock/Layout/LayoutDocumentPane.cs (revision 96146)
+++ AvalonDock/AvalonDock/Layout/LayoutDocumentPane.cs (working copy)
@@ -49,6 +49,27 @@
return true;
}
+ #region ShowHeader
+ private bool _showHeader = true;
+
+ public bool ShowHeader
+ {
+ get
+ {
+ return _showHeader;
+ }
+ set
+ {
+ if (value != _showHeader)
+ {
+ this._showHeader = value;
+ RaisePropertyChanged("ShowHeader");
+ }
+ }
+ }
+
+ #endregion
+
#region SelectedContentIndex
private int _selectedIndex = -1;
Index: AvalonDock/AvalonDock/Themes/generic.xaml
===================================================================
--- AvalonDock/AvalonDock/Themes/generic.xaml (revision 96146)
+++ AvalonDock/AvalonDock/Themes/generic.xaml (working copy)
@@ -28,7 +28,9 @@
</Grid.RowDefinitions>
<!--Following border is required to catch mouse events-->
<Border Background="Transparent" Grid.RowSpan="2"/>
- <Grid Panel.ZIndex="1">
+ <Grid Grid.Row="0"
+ Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type avalonDockControls:LayoutDocumentPaneControl}}, Path=Model.ShowHeader, Converter={StaticResource BoolToVisibilityConverter}}"
+ Panel.ZIndex="1">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
发布于 2019-12-06 11:52:45
在当前版本中,您可以添加此代码来隐藏文档的标题:
<xcad:DockingManager.DocumentTitleTemplate>
<DataTemplate>
<Grid/>
</DataTemplate>
</xcad:DockingManager.DocumentTitleTemplate>
https://stackoverflow.com/questions/13139824
复制