ポップアップコントロールには個別のものVisualTree
があり、メインのWindow / UserControlの一部ではないVisualTree
ため、Elementname
バインディングは機能しません。
ポップアップコントロールには、独自のビジュアルツリーはありません。代わりに、ポップアップのMeasureOverrideメソッドが呼び出されると、サイズ0(ゼロ)が返されます。ただし、PopupのIsOpenプロパティをtrueに設定すると、独自のビジュアルツリーを持つ新しいウィンドウが作成されます。新しいウィンドウには、ポップアップの子コンテンツが含まれています。
http://msdn.microsoft.com/en-us/library/ms749018.aspx#PopupandtheVisualTree
試すことができるのは、ContextMenusで一般的に使用される回避策です。つまり、ウィンドウ/UserControlと同じネームスコープにポップアップを追加します-
popupContainer = new PopupContainer();
popupContainer.Content = PopupContent;
PopupContent.Visibility = Visibility.Visible;
rootContent.Children.Add(popupContainer);
NameScope.SetNameScope(popupContainer, NameScope.GetNameScope(this)); //Or
// NameScope.SetNameScope(popupContainer, NameScope.GetNameScope(rootContent));