2009-05-07 3 views
0

동적으로 생성 된 개체에서 일부 애니메이션을 수행하는 사용자 지정 WPF 컨트롤을 만들었습니다. SetTargetName()을 사용하여 애니메이션 대상을 설정합니다. (나는 SetTarget()에 대해 알고 있지만 SP1이 없으면 .NET 3.5를 지원해야합니다.) 분명히 그 전에는 RegisterName()을 사용하여 객체 이름을 등록해야합니다. 내 컨트롤이 창이나 페이지의 개체로 정상적으로 배치되면 모든 것이 잘 작동합니다.DataTemplate의 컨트롤에서 RegisterName()을 호출하는 NullReference

그러나 DataTemplate에 컨트롤을 추가하면 RegisterName() 호출시 NullReferenceException이 발생합니다.

스택 추적의 상단 (문자열 이름 scopedElement 객체) System.Windows.TemplateNameScope.System.Windows.Markup.INameScope.RegisterName에서이

과 같은 System.Windows.FrameworkElement에서
을. RegisterName (String name, Object scopedElement)

내가 RegisterName에 전달하는 매개 변수는 모두 null이 아니며 내가 호출 한 개체가 null이 아닙니다. 그래서 뭔가 다른 내부적으로 null이어야하며 그것에 대해 어떻게 해야할지 전혀 모른다. 어디서든지 TemplateNameScope에 대한 정보가 없습니다.

모든 포인터는 높이 평가됩니다.

답변

1

오늘이 경험이 있습니다. 내 컨트롤 직접 참조 datatemplate의 바인딩, 그래서이 예외가 발생하지 않습니다. 바인딩에 토큰 참조를 추가하면 문제가 해결됩니다. 예를 들어 내 사용자 정의 컨트롤에 대한 DataTemplate xaml :

DataContext = "{Binding}"

관련 문제