안녕하세요.
WPF DataTemplate 관련 질문 드립니다.
혹시 ControlTemplate에서와 같이,
OnApplyTemplate
처럼 탬플릿 생성 시점과 관련된 메서드가 있을까요?
ControlTemplate은 아래처럼…
public override OnApplyTemplate()
{
base.OnApplyTemplate();
if (GetTemplateChild("PART_Border") is Border border)
{
// 템플릿 안에서 객체 찾기
}
}
이렇게 잘 사용해왔는데요!
혹시 DataTemplate도 이와 유사한 기능이나 시점이 있는지 궁금합니다.
읽어주셔서 감사합니다.
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")
{ }
}
}
그래서 다른 구조로 연구해보고 있는데 진척이 좀 되면 아래에 댓글 남겨두겠습니다.
2개의 좋아요
GetTemplateChild()메서드 자체가 자기 자신의 스타일 템플릿에서 자식 비주얼 요소를 찾는 메서드 입니다.
반면 DataTemplate은 UI자체의 템플릿이 아닌 자신의 컨텐츠 내에서 바인딩 대상을 시각화 할 수 있는 템플릿으로
논리적으로 GetTemplateChild() 처럼 특정 컨트롤을 찾을 수 없습니다.
추가 댓글로 남겨 주신 것 처럼 VisualTreeHelper클래스를 통해 알아 낼 수 있습니다.
3개의 좋아요