2012-03-08 12 views
0

は私がのMenuItemエントリーをクリックしたキャンバスキャンバス内のContextMenuの場所を特定しますか?

<UserControl> 
    <Grid myGrid> 
    <Canvas myCanvas> 
     <ContextMenu myMenu />... 

に関連したContextMenuを、持っている、そしてこの場所でコントロール(ラベル、mylabelという)を挿入したいと思います。私はそれは、マウスの右クリック(のContextMenu実際の「場所」)に対応することために、mylabelというの座標を設定する必要がありますどのように

?..

答えて

1

あなたは、例えば、のContextMenuのTranslatePointメソッドを使用することができますこのようなのMenuItemのClickイベントハンドラ、中:MYMENUがたContextMenuある

Point location = myMenu.TranslatePoint(new Point(), myCanvas); 

FrameworkElement parent = sender as FrameworkElement; 
while (parent != null && !(parent is ContextMenu)) 
{ 
    parent = parent.Parent as FrameworkElement; 
} 

ここ
<UserControl> 
    <Grid ...> 
     <Canvas ...> 
      <ContextMenu Name=myMenu />... 

はあなたのMenuItemのClickイベントの送信者からのContextMenuを得ることができる方法です

+0

送信者がContextMenuではなくMenuItemになります... ContextMenuを見つける方法がわからない... – serhio

+0

ContextMenuの 'Name'プロパティを設定できます。 – Clemens

+0

はい、しかし、いくつかの条件で表示される同じCanvas上に2つのコンテキストメニューがある場合はどうなりますか?) – serhio

関連する問題