1

おはようございます!

プロジェクトでAvalonDockを使用していますが、質問がありました:

私のプロジェクトで開発されたいくつかのページには、標準の textBlock を使用するカスタム タイトルがあります。また、一部のページでは、具体的には、ページの左側に LayoutAnchorable を固定し、右側に LayoutDocument を固定しています。

LayoutDocument の場合、このページには既にタイトルがあるため、タイトルは空です。これにより、この LayoutDocument タブの TabItem (タイトル) がまだ空の値で表示されます。すべてのページでタイトルを維持したいので、タイトルであるこの空白の tabItem を非表示または削除する方法があるかどうか疑問に思います。私の試みの 1 つは、ページの余白を変更することでした。しかし、この LayoutDocument TabItem は下方に再調整され、表示されたままになっています。

これは問題ではなく、AvalonDock の元の設計とは異なる動作であることはわかっています。ドキュメントのタブ タイトルは非表示にするつもりはありませんでしたが、独自のタイトル ページが必要な場合は興味深いと思います。よろしくお願いします。

グスタボ。

4

2 に答える 2

0

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"/>
于 2012-11-09T16:49:32.270 に答える