1
私は、以下の方法でのContextMenuを定義している:WPF:サブメニューでMenuItemのContextMenuを取得するにはどうすればよいですか?
<ContextMenu>
<MenuItem Header="Add to">
<MenuItem Header="Test1" Click="ItemClicked" />
<MenuItem Header="Test2" Click="ItemClicked" />
</MenuItem>
<MenuItem Header="Remove from All" />
</ContextMenu>
しかしItemClicked機能にどのように私は親のContextMenuへの参照を得るでしょう?最初のレベルの項目について
(例えば「すべてから削除」)私は、次のような何かを行うことができます。
var mi = sender as MenuItem;
if (mi != null)
{
var cm = mi.Parent as ContextMenu;
if (cm != null)
{
var lb = cm.PlacementTarget as ListBox;
if (lb != null)
{
// Do Stuff
}
}
}
しかし、彼らの親がnullであるので、これはサブメニューのMenuItemのために動作しません...
を返しますLogicalTreeHelper
.GetParent()
を使用してみてください。 e.Sourceまたは送信側のいずれかで呼び出されたとき。 – mutexああ、実際には私が与えた簡略化した例ではうまくいきます!私の実際のケースでは、これはDataTemplatesの2つのレベルにすべてネストされているので、何かを混乱させるようです。実際には単純化した例で私は(送信者はMenuItemとして).Parentが正しく設定されているので...私は正しく私の問題を再現していないようだ! – mutex