답변:
의존성 속성은 DependencyObject에서 파생되는 클래스의 속성이며, 단순히 백업 필드를 사용하여 값을 저장하는 것이 아니라 DependencyObject에서 도우미 메서드를 사용한다는 점에서 특별합니다.
그들에 대한 가장 좋은 점은 데이터 바인딩에 대한 모든 배관이 내장되어 있다는 것입니다. 무언가를 바인딩하면 변경 될 때 알려줍니다.
도움이되고 잘 작성된 것으로 밝혀진 유일한 설명은 다음과 같습니다. http://www.wpftutorial.net/dependencyproperties.html
기본적으로 DependencyProperties는 클래스의 필드에 대한 setter / getter가 아니라 런타임 중에 실제 값을 동적으로 검색한다는 점에서 일반 속성과 다릅니다. SetValue()
DP 의 방법은 매우 간단하며 속성의 로컬 값을 사용자가 제공 한 값으로 설정합니다. 그러나 GetValue()
DependencyProperty에서 시도 할 때 먼저 로컬 값을 찾고, 존재하지 않는 경우 (일반 속성과 달리 DependencyProperties에서 실행 가능) 해당 값을 찾을 때까지 논리 UI 트리를 계속 진행합니다. 프레임 워크가 로컬 값을 찾지 않고 트리의 맨 위에 도달하면 미리 정의 된 기본값을 속성 값으로 사용합니다.
이 방법을 통해 DependencyProperties는 사용자가 명시 적으로 설정 한 값만 로컬에 저장되므로 일반 속성보다 적은 메모리를 사용합니다.
또한 위에서 언급 한 것처럼 DependencyProperties를 사용하면 XAML 코드에서 바인딩하고 일반 속성에서는 허용되지 않는 트리거를 설정할 수 있습니다.
나는 막연함의 일부를 정리했으면 좋겠다 :)
Grid.Row="1"
에서 on은 Button
행의 행 번호 Grid
가 0이기 때문에 부모의 행 # 2에 설정 되지만 Row
DependencyProperty는 Grid
객체에 속합니다 .
DependencyProperties also allow us to bind to them in the XAML code and set triggers on them, which on regular properties is not allowed
XAML의 바인딩과 트리거 설정 또는 트리거 설정이 모두 허용되지 않는다는 의미입니까? 후속 조치를 취하고 더 명확하게 해주셔서 감사합니다!
Value
값이 0 인 속성 (DP가 아님) Value
이 있고 1로 변경 될 때 뷰가 무언가를 원한다고 가정 해 봅시다 DataTrigger
.Binding={Binding Path=Value, Value=1}
http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ 는 WF 및 WPF의 맥락에서 종속성 속성에 대한 좋은 설명을 제공합니다.
발췌 :
요점 – 종속성 속성 값이 해결되었습니다.
모든 속성과 마찬가지로 종속성 속성의 최종 목표는 상태를 관리하는 것입니다. 그러나 일반 .Net 속성과 달리 로컬 속성 값은 인스턴스 변수에 저장되지 않습니다.
대신 종속성 속성이 종속성 속성 프레임 워크에 등록되고 기본 속성 값이 확인됩니다. 즉, 값은 속성 등록에 의해 정의 된 규칙에 따라 종속성 속성 프레임 워크에 의해 결정됩니다.