0

私は、diagramSurface オブジェクトである UI を持っています。アプリケーションの実行中に、要素 (ラベルのようなもの) をその上にドラッグ アンド ドロップします。このオブジェクトに CONTEXTMENU を実装したいと考えています。

私はこれをやった

<DiagramSurface>
     <DiagramSurface.ContextMenu>
         <ContextMenu >
                <MenuItem Header="Save" Click="MenuItem_Click"/>
         </ContextMenu>
     <DiagramSurface.ContextMenu>
</DiagramSurface>

これを行うことで、オブジェクトが存在しないサーフェスをクリックすると、contextMenu が表示されます。これを回避する方法は?要素の右クリックでのみコンテキスト メニューを表示したい。

4

1 に答える 1

0

@Viv が言うように (彼が回答でそれを言わなかった理由はわかりませんが)、追加したコントロールの任意の場所ContextMenuを右クリックすると、 が表示されます。したがって、 に追加すると、そのコントロールの任意の場所をクリックしたときに表示されます。問題を解決するには、コントロールから宣言を削除します。DiagramSurfaceDiagramSurface

次に、ドラッグ アンド ドロップするコントロールに追加する必要があります。@Viv のように実行ContextMenuし、Resourcesセクションで定義できます。

<Application.Resources>
    <ContextMenu x:Key="ContextMenu">
        <MenuItem Header="Save" Click="MenuItem_Click"/>
    </ContextMenu>
</Application.Resources>

次にContextMenu、コードからドラッグ ドロップ要素のとして設定します。

ContextMenu menu = (ContextMenu)Application.Current.FindResource("ContextMenu");
element.ContextMenu = contextMenu;
于 2013-08-23T15:05:43.627 に答える