1

SL4는 이전에 데이터 바인딩이 FrameworkElements 또는 FrameworkContentElements에서만 작동했던 DependencyObjects에서 파생 된 개체의 데이터 바인딩 속성을 소개한다는 내용을 읽었습니다.Silverlight4에서 DependencyObject의 DataContext는 무엇입니까?

그러나 DependencyObjects의 바인딩 속성을 바인딩 할 때 바인딩 원본이 어떻게 결정되는지는 분명하지 않습니다.

FrameworkElements의 경우 요소의 DataContext 속성은 원본 개체입니다 (DataContext가 직접 설정되지 않은 경우 DataContext를 찾기 위해 '트리를 걷는').

DependencyObjects의 경우 XAML 파일에서 '포함 된'FrameworkElement의 DataContext가 사용 된 것 같습니다. 그러나이 객체를 포함하는 것을 결정하는 메커니즘은 무엇입니까?

내 경우에는 FrameworkElement의 속성 인 ObservableCollection에있는 DependencyObject의 속성을 바인딩하려고합니다. Databinding 시스템이 자체 DataContext로서 DependencyObject 자체를 사용하는 것처럼 보이기 때문에 안타깝게도 DependencyObject의 속성을 바인딩하려고하면 실패합니다. 그것은 (출력 창에서) 유형이 바인딩 표현식에 지정된 이름을 가진 특성을 가지고 있지 않다고 불평합니다. 동일한 바인딩 표현식을 사용하여 동일한 UserControl에서 FrameworkElement의 종속성 속성을 바인딩하면 성공합니다.

답변

1

바인딩을 정의 할 때 Source 또는 ElementName 속성을 사용 해봤습니까?

(예 :.. {Binding Source={StaticResource theFrameworkElement} Path=theObservableCollection[0]}

또는 StackPanel에의으로 RenderTransform로 설정되어 ScaleTransform의 규모를 바인딩 할 때 그러나, 나는이 작업을 수행 할 필요가 없습니다 일

+0

{Binding ElementName=theFrameworkElement Path=theObservableCollection[0]} 난을 기원합니다 이 상황이 어떻게 다른지 알았습니다. – mackenir

+0

저는 FrameworkElement의 속성 인 종속성 개체에 대한 데이터 바인딩을 관리 할 수있었습니다. FE의 속성은 종속성 속성이어야하며, 바인딩에 대한 바인딩도 가져 왔습니다. FE - 컬렉션은 DependencyObjectCollection이어야합니다. 나는 이것을 다시 발견했습니다 ... he documentation !: http://msdn.microsoft.com/en-us/library/cc278072(v=VS.95).aspx – mackenir

관련 문제