2011-09-03 14 views
5

읽기 전용 DependencyProperty가 포함 된 클래스가 있습니다. 이 클래스에서 다른 클래스 (코드에서 바인딩 만들기)의 다른 읽기 전용 DepenendencyProperty으로 읽기 전용 DependencyProperty에 바인딩하고 싶습니다.읽기 전용으로 바인딩 DependencyProperty를 다른 읽기 전용으로 설정합니다. DependencyProperty

이렇게 할 가능성이 있습니까? SetBinding()은 DependencyPropertyKey을 매개 변수로 사용하는 과부하가없는 것 같습니다. 그러한 기능을 제공하기 위해 BindingOperations -class도 보이지 않습니다.

질문도 공식화 할 수 있습니다. DependencyPropertyKey이있는 경우 읽기 전용 DependencyProperty에 대한 바인딩을 만들 수 있습니까?

+0

어떻게 작동하나요? 양면이 읽기 전용이라면 어떤 경우에도 OneWay가 작동하지 않을 수 있습니다. –

+1

@ H.B. 읽기 전용이 아닌 읽기 전용 DependencyProperty (DependencyPropertyKey) 키가 있으므로 클래스의 관점에서 볼 때 읽기 전용이 아닙니다. 수업 외에서 만. CLR-Property의 private setter와 같은 것 - 클래스 내부에서 액세스 할 수 있지만 다른 클래스에서는 읽기 전용 속성입니다. http://msdn.microsoft.com/en-us/library/system.windows.dependencypropertykey.aspx – HCL

+0

알겠습니다. 어쨌든 내가 할 수 있다고 의심, 당신은 쉽게 속성 - 변경 콜백을 등록하고 수동으로 값을 설정할 수 있습니다. –

답변

2

FrameworkElement.SetBinding 메서드는 첫 번째 매개 변수로 DependencyProperty 만 허용하기 때문에 불가능합니다. 대신 DependencyPropertyKey을 수락하면 좋았을 것입니다. 키는 클래스 외부에서 볼 수 없기 때문에 여전히 클래스 외부에서는 읽기 전용이지만 클래스 내에서는 바인딩에 사용할 수 있습니다. 불행히도 이것은 불가능합니다.

0

구현 방법에 대한 좋은 제안이 있으십니까?

개인 RW 종속성 속성을 구현하고 원본 RO를 바인딩하고 RW의 콜백에서 노출 RO를 수정하려고 할 수 있습니다. 그러나 이것은 해킹처럼 들린다. 더 좋은 옵션이 있습니까?

관련 문제