2011-03-01 2 views
8

DependencyObjects 및 DependencyProperties에 대한 내 탐구를 계속하면서 누군가가 예상치 못한 동작을 설명 할 수 있기를 바랍니다.DependencyObject에 등록되지 않은 DependencyProperties에 액세스 할 수있는 이유는 무엇입니까?

주어진 다음의 간단한 클래스 :

class SomeClass : DependencyObject { 
    } 

내가 즐겁게 쓸 수있는 코드와 같은 : 다음과 같은 출력 제공

public static void Test() { 
    SomeClass a = new SomeClass(); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
    a.SetValue(EllipseGeometry.RadiusXProperty, 3.24); 
    Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty)); 
} 

:

0 
3.24 

아무것도에 없습니다를 내 EllipseGeometry 클래스와 관계가있는 클래스이며, 클래스를 클래스의 소유자로 추가하지 않았습니다. EllipseGeometry.RadiusXProperty 속성을 사용하거나 RegisterAttached()를 사용하는 이유는 무엇입니까? 프레임 워크가 오류를 발생시키지 않으면 모든 DP를 내 DO에 추가 할 수 있습니다.

누구도이 이상한 행동을합니까? 나는 "당신은이 객체에이 속성을 등록하지 않았습니다"라는 라인을 따라 어떤 형태의 예외를 예상했을 것입니다 ... 나는 이런 방식으로 DP를 추가하기위한 특별한 용도가 있는지에 대해 어떤 조언을 해줄 것입니다. 이 동작을 허용하는 목적을 알 수 없습니다.

많은 감사, 매트

+0

'SomeClass'는'TestClass' (또는 그 반대)를 의미한다고 생각합니까? –

+0

EllipseGeometry.RadiusXProperty는 연결된 속성입니까? –

+0

안녕하세요, Steven, 당신은 정확하게 추측하고 복사 및 붙여 넣기 오류가 발생했습니다. TestClass의 이름을 SomeClass로 변경했습니다. 늦었 어. 내가 더 말할 수 있을지. –

답변

1

이 문제는 연결된 속성을 사용할 수 있습니다. 이 기능이 없으면 어떻게 TextBox에서 Grid.Row를 사용할 수 있습니까?

관련 문제