2012-04-23 3 views
1

에 결합합니다.내가처럼 보이는 뭔가를 내 XAML에서없는 존재 않는 속성 (? TreeViewItem 만)

내 TreeView는 내 DataLayer 계층 구조를 래핑하는 ModelView 계층 구조 (MVVM)에 바인딩됩니다. 다른 계층 구조에 대한 계층 구조 랩퍼. 내 바운드 ModelView 계층 구조 (IsSelected 및 IsExpandedOverridedInModelView) 같은 몇 가지 속성을 추가합니다. 이 코드는 주로 TreeView.IsExpanded 속성과 내 ModelView 계층 구조 속성 인 "IsExpandedOverridedInModelView"간의 바인딩을 정의합니다.

하지만 파악하지 못하고 뭔가가 ...

모두가 TreeViewItem 클래스는 "IsExpandedOverridedInModelView"라는 속성이없는 것을 알고있다. 이 속성은 기본 객체 (TreeViewItem 뒤에있는 ModelView의 객체)의 일부일 경우에 사용됩니다. 2 개의 관련 질문이 있습니다.

  • 그 선언은 무엇이 가능합니까? 그 행동을 가능하게하는 비틀기는 무엇입니까?
  • ~ "경고 기호"IsExpandedOverridedInModelView '를 해결할 수 없다는 경고를 제거하려면 어떻게 선언해야합니까? (깨끗하게 선언하는 방법)?

나는 TreeViewItem이 DynamicObject에서 파생되었을 것이라고 생각했지만 그렇지 않았습니다.

+0

나는 혼란 스럽다. 존재하지 않는 무언가에 묶고 싶다는 말인가? 아니면'IsExpanded' *가 존재하지만, 다른 객체에 있다고 말하면서, 그것을 올바르게 바인딩 할 수 있어야합니까? –

+0

안녕 댄, 충분히 명확하지 않은 것에 대해 유감스럽게 생각합니다. 나는 방금 내 생각을 충분히 명확하게 표현하지 못했다는 것을 깨달았습니다. 변수의 이름을 변경하고 더 많은 설명을 추가하여 내 질문에 대한 아이디어를 명확히 할 수 있기를 바랍니다. 당신을 돌려줘서 고마워. –

답변

3

TreeViewItemIsExpanded property 있습니다. 달리 경고하는 경고는 일부 IDE 헛소리의 결과입니다. 그리고 바인딩은 DataContext을 의미합니다.이 속성은 디자이너가 사용하지 않는 한 런타임에서만 평가되는 속성을 가질 수 있습니다 (다시 경고는 단지 IDE 쓰레기입니다).

+0

안녕하세요. 안녕하세요. 답변 해 주셔서 감사합니다. 당신의 대답을 보는 것만으로도 제 질문이 불투명하다는 것을 알 수있었습니다. 내 코드를 "IsExpanded"에서 "IsExpandedOverridedInModelView"로 수정했습니다. 내 생각을 분명히해야 해. 충분히 명확하지 않은 것에 대해 유감스럽게 생각합니다. –

+0

@EricOuellet : 내가 말했듯이 바인딩의 속성은'TreeViewItem'이 아니라'DataContext'를 참조합니다. 'DataContext'가 무엇을 읽는지 모른다면, 제 대답에 링크 된 문서들입니다. –

+0

안녕하세요. H., 나는 DataContext가 무엇인지 알고 있다고 생각합니다. 그러나이 경우 TreeViewItem 계층을 참조하는 스타일을 정의합니다. DataType을 사용하면 DataContext 자체가이 클래스 또는 파생 클래스에 적용됩니다. 즉, 여기에있는 DataContext는 선언 자체에 의해 암시 적입니다. TreeViewDataItem은 DataContext입니다. 하지만, ViewModel에 정의 된 속성을 어떻게 사용합니까? –

관련 문제