하나의 DP로 사용자 정의 컨트롤을 만들었습니다. 이제 5 번 내 페이지에서 그 UC를 사용하고 내 질문은, DP는 단지 하나의 인스턴스를 만들 수 있도록 정적 속성입니다. 이제 5 가지 컨트롤에 대한 값이 어떻게 유지 될까요?종속성 속성 값 보유 방법
답변
종속성 속성은 유형별로 만들어지며 필요한 경우 사용자 지정할 수 있습니다. 따라서 화면에 20 개의 버튼이 있다고 가정 해 봅시다. 점유 한 속성의 저장 공간은 하나의 버튼만큼 좋습니다.
DependencyObject에 두 해시 유지 부재 :
- 한 정적
개인 정적 해시 테이블 _staticProperties = 새로운 해시 테이블();
- 또 다른 비 정적.
개인 Hashtable 속성 = 새 Hashtable();
정적 멤버는 기본값의 DP (모든 유형에 대해 하나)와 비 정적 멤버 저장소 값을 변경 한 값을 저장합니다.
dp의 SetValue 메소드를 호출하면 기본적으로 비 정적 HashTable에 항목이 추가됩니다. 그리고 GetValue가 호출 될 때 DependencyObject는 먼저 비 정적 HashTable에 키가 있는지 검사합니다. 가 발견되면 다음
DP 그것이 변경된 시간까지 값을 보유하지 않고, 값이 다른 사람은 정적 멤버의 값을 (기본값 인)
그래서 돌려줍니다.
DP는 정적이므로 앱에서 값을 볼 수 있습니다. 그렇기 때문에 인스턴스를 생성하는 대신 DP를 등록해야합니다. DP는 DependencyObject에 클래스에서 선언 된 해시 가치를 보유하고
, 당신은 하나를 등록하는 동안 소유자의 유형을 통과해야합니다.
또한 내 블로그에 여기를 볼 수 있습니다 How Dependency Property holds value
당신이 재산의 단 하나의 정의는 당신이 정적 멤버를 사용하여 정의를 만들 이유가있는 DependencyProperty
를 선언합니다.
그러나 DependencyProperty
에 대한 값이있는 각 개체는 고유 한 속성 값을 가져옵니다. 클래스에 DependencyProperty
을 만드는 일반적인 패턴은 속성 setter 및 getter를 만드는 것이며이 속성은 정적이 아닙니다.
public class MyObject : DependencyObject {
public static readonly DependencyProperty SomethingProperty =
DependencyProperty.Register(
"Something",
typeof(String),
typeof(MyObject),
new PropertyMetadata(default(String))
);
public String Something {
get { return (String) GetValue(SomethingProperty); }
set { SetValue(SomethingProperty, value); }
}
}
속성 정의가 정적 인 것을 알 수 있지만, 실제 속성 :
DependencyProperty
를 정의하는 기본 패턴이있다.
MyObject
의 각 인스턴스에는 Something
종속성 속성 값이 있습니다.
- 1. 바인딩에서 종속성 속성 값 재설정
- 2. WPF 종속성 속성 반환 값
- 3. 종속성 속성 (XAML)에 큰 값 사용
- 4. 값 보유 Java
- 5. 속성 종속성 및 JPA
- 6. 종속성 속성 사용 비용
- 7. 간단한 종속성 속성?
- 8. 종속성 속성 지우기
- 9. 종속성 속성 올바른 사용
- 10. 워크 플로 종속성 속성
- 11. 종속성 속성 WPF Grid
- 12. WPF - 종속성 속성 오류
- 13. 종속성 속성 업데이트 메커니즘
- 14. 종속성 속성 사용법
- 15. Datagrid에 종속성 속성 추가
- 16. app.xaml.cs의 종속성 속성
- 17. 전송 종속성 속성 값이
- 18. 다른 종속성 속성 업데이트
- 19. XamlParseException을 유발하는 종속성 속성
- 20. 슬라이더 WPF의 종속성 속성
- 21. 로드시 종속성 속성 액세스
- 22. WPF 종속성 속성 바인딩
- 23. 종속성 속성 'PropertyChangedCallback은
- 24. 종속성 속성 UserControl에서 바인딩
- 25. wpf에서 종속성 속성 사용
- 26. 종속성 속성 "캐스케이드"바인딩
- 27. 컨트롤에 종속성 속성 추가
- 28. 종속성 속성 시스템 이해
- 29. WPF 인터셉트 종속성 속성
- 30. VisualStudio의 PropertyWindow에있는 종속성 속성