如何获取UIElement的父Popup?

alt*_*tso 2 silverlight popup uielement

我对下面的标记有两个问题:

<Popup>
    <Button x:Name="button"/>
</Popup>
Run Code Online (Sandbox Code Playgroud)
  1. 为什么VisualTreeHelper.GetParent(button)返回null?
  2. 我怎样才能得到父母PopupUIElement

Hen*_*y C 5

VisualTree您是否只是尝试了一个while循环来走向.Parents以获取元素,而不是通过它?

    private void TryClosePopupParent(object o)
    {
        while (o != null)
        {
            Popup p = (o as Popup);
            if(p == null)
            {
                o = (o as FrameworkElement).Parent;
            }
            else 
            {
                p.IsOpen = false;
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我还没有测试过它的东西,具有PopUp作为父母,但它为我工作.