2014-02-13 3 views
0

내가 원하는 것은 Depedency 개체의 인스턴스로 설정된 모든 연결된 속성을 검색하는 것입니다.WinRT에서 DependencyObject로 설정된 모든 연결된 속성을 얻는 방법?

예를 들어. 나중에 코드에 <Button x:Name="myButton" Grid.Row="2">이 있으면이 인스턴스에 설정된 연결 속성 목록을 검색 할 수 있기를 원합니다. 명시 적으로 myButton의 인스턴스로 설정되어 그 이후

List<DependencyProperty> attachedProperties = GetAttachedProperties(myButton); 

같은 뭔가는 Grid.RowProperty 첨부 속성 목록을 반환해야합니다.

+0

리플렉션 또는 실제 연결된 속성 (종속성 속성)을 통해 나타 냈습니까? – WiredPrairie

+0

첨부 된 속성을 의미합니다. 하나의 유형으로 등록되지만 다른 유형에 속할 수있는 종속성 등록 정보입니다. 캔버스처럼. 왼쪽. 한 유형으로 정상적으로 선언되지 않으면 어떻게받을 수 있습니까? 예를 들어, Button은 Grid.Row를 상속받을 수 있습니다. – SuperJMN

+0

그래서'Grid'가 있으면, 부착 가능한 모든 속성을 찾으십니까? 버튼에 대해 언급했지만 단추는 연결된 모든 속성을 허용 할 수 있습니다. – WiredPrairie

답변

1

내 시각 트리 디버거 도구에서 I am doing it은 모든 유형의 패키지에서 알려진 어셈블리를 검사하고 유형이 DependencyProperty 인 정적 속성을 확인한 다음 종속성 속성이 연결되어 있는지 확인하기 위해 몇 가지 경험적 방법을 사용합니다. 종속성 속성에 이름이 매핑 된 일반 CLR 속성이있는 경우 (없는 경우에는 일반적으로 연결된 속성을 나타냅니다). 그렇지 않으면 - Get 메소드가 있으면 대개 연결된 속성을 나타냅니다. 모든 속성 목록을 얻은 후에는 DependencyObject에서 ReadLocalValue을 호출 할 수 있으며 결과적으로 DependencyProperty.UnsetValue이 발생하면 속성이 개체에 설정되지 않습니다.

누구나 더 좋은 방법이 있다면 - 내 코드를 간소화 할 수 있다면 좋을 것이므로 정말 듣고 싶습니다.

아, 그런데 그건 상점 앱에서 제공하는 코드가 아닙니다. 진단/디버깅에만 사용합니다.

0

음, 필자는 종속성 개체에 연결된 모든 속성을 쿼리 할 수 ​​없다는 것을 알아 냈습니다. 연결된 속성은 실제로 인스턴스 자체의 일부가 아니라 인스턴스 자체를 등록하는 유형으로 구성됩니다.

내 문제는 처음에 Dependency Object로 설정된 모든 연결된 속성을 검색하려고했지만 실제로 필요한 것은 "Canvas.Left"와 같은 문자열에서 Attached 속성을 가져올 수 있다는 것입니다. Dependency Object (대상). 문자열에서 정보를 가져와 Canvas에서 선언 된 속성을 쿼리하고 LeftProperty를 찾아야합니다. 그런 다음 Target.GetValue (dp)를 사용하여 값을 가져 오거나 설정할 수 있습니다.