2011-10-31 27 views
7

プロジェクトでAvalonDockを使用して、ツールウィンドウを利用しています。AvalonDockのコンテキストメニューをカスタマイズできますか?

私はタブ付きドキュメントを必要とせず、ツールウィンドウのタイトルバーを右クリックすると「ドックとしてタブ付きドキュメント」コンテキストメニュー項目を無効にしたいと考えています。これは可能ですか?

ありがとうございます。

答えて

3

これは単純なプロパティ設定だと思います。 私はあなたが欲しいスタイルにDockableStyleプロパティを変更することができます76560.

をCodePlexのから最新のソースを使用します。

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

とcontectメニューを無効にするには、このメソッドをオーバーライドすることができた:

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); 
    } 
} 
ここ

フラグ列挙型である:

/// <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 
} 
+0

どうもありがとう、私は無効にするには、管理しました「タブ付き文書としてドッキングする」。また、アイテムを削除してコンテキストメニューに表示される名前を変更できるかどうか知っていますか?フローティングモードのときにいくつかのエラーが検出されましたが、DockableContentのContextMenuプロパティが常にnullであることがわかりました。 –

関連する問題