FindParentWindow (this) .Name이 null을 반환합니다.

벅 힉스

내 응용 프로그램 창에 대한 바닥 글 인 사용자 컨트롤이 있습니다. 나는 현재 usercontrol을 호스팅하는 Window의 이름을 얻으려고하는데, 그건 그렇고 여러 요소가 깊기 때문에 부모를 호출 할 수는 없습니다.

VisualTreeHelper에 대해 읽었으며 아래의 것과 같은 여러 코드 샘플을 시도해 보았지만 무엇을하든 상관없이 xxxx.exe에서 'System.NullReferenceException'유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다. 추가 정보 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

public partial class ucFooter : UserControl
{
    public ucFooter()
    {
        InitializeComponent();
        tbParent.Text = FindParentWindow(this).Name;
    }

    private static Window FindParentWindow(DependencyObject child)
    {
        DependencyObject parent = VisualTreeHelper.GetParent(child);

        //CHeck if this is the end of the tree
        if (parent == null) return null;

        Window parentWindow = parent as Window;
        if (parentWindow != null)
        {
            return parentWindow;
        }
        else
        {
            //use recursion until it reaches a Window
            return FindParentWindow(parent);
        }
    }  
}

코드를 단계별로 실행하면 If Parent == null 검사가 전달되지 않습니다. 그래서 두 가지 질문이 있습니다. 이 작업을 수행하려면 무엇이 수정되어야하며 그렇지 않은데 부모가 null이라고 생각하는 이유는 무엇입니까?

클레멘스

컨트롤의 생성자를 실행하는 동안 시각적 트리는 아직 설정되지 않았습니다. 메서드 호출을 Loaded이벤트 처리기로 이동 합니다.

public ucFooter()
{
    InitializeComponent();
    Loaded += OnLoaded;
}

private void OnLoaded(object sender, RoutedEventArgs e)
{
    tbParent.Text = FindParentWindow(this).Name;
}

private static Window FindParentWindow(DependencyObject child)
{
    var parent = VisualTreeHelper.GetParent(child);

    if (parent == null)
    {
        return null;
    }

    return (parent as Window) ?? FindParentWindow(parent);
}  

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

TOP 리스트

  1. 1

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  2. 2

    MDRotatingPieChart를 회전하면 각도 대신 x / y 위치가 변경됩니다.

  3. 3

    c # 웹 사이트에서 텍스트를 복사하는 방법 (소스 코드 아님)

  4. 4

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  5. 5

    ArrayBufferLike의 typescript 정의의 깊은 의미

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    복사 / 붙여 넣기 비활성화

  8. 8

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    QT Designer를 사용하여 GUI에 이미지 삽입

  11. 11

    java Apache POI Word 기존 테이블 셀 스타일 및 서식이있는 행 삽입

  12. 12

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  13. 13

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  14. 14

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  15. 15

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  16. 16

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  17. 17

    dataSnapShot.getValue () 반환 데이터베이스에 그겁니다 데이터 종료 널 (null)

  18. 18

    ORA-12557 TNS : 프로토콜 어댑터를로드 할 수 없습니다

  19. 19

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  20. 20

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  21. 21

    C # Asp.net 웹 API-JSON / XML 변환기 API 만들기

뜨겁다태그

보관