null의 경우, 동작은 다음과 같은 코드가 있습니다 : OnMycontrolLoaded 메서드가 호출됩니다 (즉, Control/AssociatedObject가로드 됨). 그러나 AssociatedObject는 null입니다.WPF 동작 AssociatedObject 내가 내 컨트롤 (XAML에서)에 동작을 설정하고있어
왜 그런가?
null의 경우, 동작은 다음과 같은 코드가 있습니다 : OnMycontrolLoaded 메서드가 호출됩니다 (즉, Control/AssociatedObject가로드 됨). 그러나 AssociatedObject는 null입니다.WPF 동작 AssociatedObject 내가 내 컨트롤 (XAML에서)에 동작을 설정하고있어
왜 그런가?
AssociatedObject가 참조되는 위치를 찾아야합니다. 여기 http://www.reflectionit.nl/Blog/2013/windows-8-xaml-tips-creating-blend-behaviors
public abstract class Behavior<T> : DependencyObject, IBehavior where T : DependencyObject {
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public T AssociatedObject { get; set; }
protected virtual void OnAttached() {
}
protected virtual void OnDetaching() {
}
public void Attach(Windows.UI.Xaml.DependencyObject associatedObject) {
this.AssociatedObject = (T)associatedObject;
OnAttached();
}
public void Detach() {
OnDetaching();
}
DependencyObject IBehavior.AssociatedObject {
get { return this.AssociatedObject; }
}
}
봐.
그리고 뭐라구? 이것은 AssociatedObject의 원래 문제에 어떻게 대답합니까? – AndyUK
그렇지 않습니다. 이 상황은 비헤이비어의 데이터 바인딩 된 속성에 null이 아닌 값이 있고 * 해당 비헤이비어가 템플릿에서 사용되는 경우에 발생하는 것으로 보입니다. 제 의견으로는 버그입니다. 제안 된 두 가지 해결책은 http://stackoverflow.com/questions/5541702/dependencyobject-associatedobject-is-always-null에 대한 답변을 참조하십시오. –
'OnDetached'가 전에 호출되었을 가능성이 있습니까? 컨트롤이 UI에 표시되거나 코드에서 참조됩니까? –
이벤트가 OnDetaching (편집 된 게시물 참조)에서 등록 취소되면 컨트롤이 UI에 표시됩니다. –
동작을 생성하고 첨부하는 xaml/코드를 추가 할 수 있습니까? –