WPF DataTemplate은 OnApplyTemplate과 비슷한 기능이 있나요?

안녕하세요. :smile:

WPF DataTemplate 관련 질문 드립니다.

혹시 ControlTemplate에서와 같이,
OnApplyTemplate 처럼 탬플릿 생성 시점과 관련된 메서드가 있을까요?

ControlTemplate은 아래처럼…

public override OnApplyTemplate()
{
    base.OnApplyTemplate();
    if (GetTemplateChild("PART_Border") is Border border)
    {
        // 템플릿 안에서 객체 찾기
    }
}

이렇게 잘 사용해왔는데요!

혹시 DataTemplate도 이와 유사한 기능이나 시점이 있는지 궁금합니다.

읽어주셔서 감사합니다. :smile:

좋아요 2

이런 식으로 찾을 수 있지만 ControlTemplate - OnApplyTemplate 방식 처럼 지원하는 부분은 없는 것 같습니다.

public void TestMethod()
{
    DataTemplate dt = FlipView5Horizontal.ItemTemplate;
    DependencyObject dio = dt.LoadContent();
    // FindVisualTree is defined in the 
    foreach (var timeLine in FindVisualChildren<TextBlock>(dio)) question :)
    {
        if (timeLine.Name == "xxxTB")
        { }
    }
}

그래서 다른 구조로 연구해보고 있는데 진척이 좀 되면 아래에 댓글 남겨두겠습니다. :smile:

좋아요 2

GetTemplateChild()메서드 자체가 자기 자신의 스타일 템플릿에서 자식 비주얼 요소를 찾는 메서드 입니다.

반면 DataTemplate은 UI자체의 템플릿이 아닌 자신의 컨텐츠 내에서 바인딩 대상을 시각화 할 수 있는 템플릿으로

논리적으로 GetTemplateChild() 처럼 특정 컨트롤을 찾을 수 없습니다.

추가 댓글로 남겨 주신 것 처럼 VisualTreeHelper클래스를 통해 알아 낼 수 있습니다.

좋아요 3