Can I customize the AvalonDock context menu?

I use AvalonDock in a project to take advantage of tool windows.

I do not need tabbed documents and you want to disable the "Dock as Tabbed Document" context menu item when I right-click on the title bar of the tool window. Is it possible?

thanks

+7
source share
1 answer

I think this is a simple property setting. I am using the latest source from codeplex 76560.

You can change the DockableStyle property to the style you want:

<ad:SampleDockableContent DockableStyle="DockableToBorders" x:Name="DockingManagerPropertiesHost" Title="Only dock to borders"> </ad:SampleDockableContent> 

and can override this method to disable the context menu:

 public partial class SampleDockableContent : DockableContent { public SampleDockableContent() { this.InitializeComponent(); this.DataContext = this; } protected override bool CanExecuteCommand(ICommand command) { if (command == DockableContentCommands.ShowAsDocument) { if (this.DockableStyle == DockableStyle.DockableToBorders) { return false; } if (this.State == DockableContentState.Document) { return false; } } return base.CanExecuteCommand(command); } } 

here is a flag listing:

 /// <summary> /// Defines how a dockable content can be dragged over a docking manager /// </summary> /// <remarks>This style can be composed with the 'or' operator.</remarks> public enum DockableStyle : uint { /// <summary> /// Content is not dockable at all /// </summary> None = 0x0000, /// <summary> /// Dockable as document /// </summary> Document = 0x0001, /// <summary> /// Dockable to the left border of <see cref="DockingManager"/> /// </summary> LeftBorder = 0x0002, /// <summary> /// Dockable to the right border of <see cref="DockingManager"/> /// </summary> RightBorder = 0x0004, /// <summary> /// Dockable to the top border of <see cref="DockingManager"/> /// </summary> TopBorder = 0x0008, /// <summary> /// Dockable to the bottom border of <see cref="DockingManager"/> /// </summary> BottomBorder= 0x0010, /// <summary> /// A <see cref="DockableContent"/> with this style can be hosted in a <see cref="FloatingWindow"/> /// </summary> Floating = 0x0020, /// <summary> /// A <see cref="DockableContent"/> with this style can be the only one content in a <see cref="DockablePane"/> pane (NOT YET SUPPORTED) /// </summary> /// <remarks>This style is not compatible with <see cref="DockableStyle.Document"/> style</remarks> Single = 0x0040, /// <summary> /// A <see cref="DockableContet"/> with this style can be autohidden. /// </summary> AutoHide = 0x0080, /// <summary> /// Dockable only to a border of a <see cref="DockingManager"/> /// </summary> DockableToBorders = LeftBorder | RightBorder | TopBorder | BottomBorder | AutoHide, /// <summary> /// Dockable to a border of a <see cref="DockingManager"/> and into a <see cref="DocumentPane"/> /// </summary> Dockable = DockableToBorders | Document | Floating, /// <summary> /// Dockable to a border of a <see cref="DockingManager"/> and into a <see cref="DocumentPane"/> but not in autohidden mode (WinForms controls) /// </summary> DockableButNotAutoHidden = Dockable & ~AutoHide } 
+3
source

All Articles