2011-12-07 1 views
3

ListView와 선택한 개체의 세부 정보가 표시되는 영역으로 창을 만들려고합니다. Listview는 ObservableCollection(Of T) 컬렉션에 저장된 항목을 표시합니다. 항목 자체에는 ObservableCollecton(Of T) 콜렉션이 포함되어 있는데, 이는 다른 ListView의 세부 사항 영역에 표시되어야하므로 첫 번째 ListView의 선택된 항목에 따라 표시되어야합니다.WPF Databinding ListView는 아무 것도 될 수없는 개체의 속성에

문제점 : InitializeComponent()는 예외 (XAMLParseException)를 발생시킵니다.

예외 :
Set property 'System.Windows.Controls.GridViewColumn.DisplayMemberBinding' threw an exception.

의 InnerException :
Object of type 'System.String' cannot be converted to type 'System.Windows.Data.BindingBase'.

라인 및 예외의 ColumNumer

내 ListView에의 <GridView> (.View)에서 가리키는이

이 처음이다 ListView

<ListView ItemsSource="{Binding Path=MyObjectCollection, Mode=OneWay}" SelectedItem="{Binding Path=Selected, Mode=OneWayToSource}"> 
    <ListView.View> 
     <GridView> 
     <GridViewColumn DisplayMemberBinding="{Binding Path=Name, Mode=OneWay}"> 
      <GridViewColumnHeader Content="Name" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

그리고이 두 번째 ListView에

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}"> 
    <ListView.View> 
     <GridView> <!-- Thats the Line where the Exception is pointing at --> 
     <GridViewColumn Width="150" DisplayMemberBinding="Key"> 
      <GridViewColumnHeader Content="Key" /> 
     </GridViewColumn> 
     <GridViewColumn Width="150" DisplayMemberBinding="Value"> 
      <GridViewColumnHeader Content="Value" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 

겠어요 -이다 어떻게 개체의 Collection 속성에 바인딩 할 수 있습니까?

답변

3

예외 메시지에서 두 번째 목록보기의 DisplayMemberBinding에 문제가있는 것입니다. 문자열 대신 see MSDN이라는 바인딩 식을 제공해야하기 때문입니다. 첫 번째 목록보기에서처럼 :

<ListView ItemsSource="{Binding Path=SelectedItem.MySubCollection, Mode=OneWay}"> 
    <ListView.View> 
     <GridView> <!-- Thats the Line where the Exception is pointing at --> 
     <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Key}"> 
      <GridViewColumnHeader Content="Key" /> 
     </GridViewColumn> 
     <GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=Value}"> 
      <GridViewColumnHeader Content="Value" /> 
     </GridViewColumn> 
     </GridView> 
    </ListView.View> 
</ListView> 
+0

그것은 작동합니다. 고마워요 :). 방금 바인딩 제판을 놓쳤습니다. 하지만 바인딩식이없이 이미 사용했다고 생각했습니다 ... 어쩌면 .. 어쨌든 .. 도와 줘서 고마워요. – Nicholas

+0

당신이'ItemsControl.DisplayMemberPath' 속성으로 엉망진창이라고 생각합니다. 참으로 문자열입니다. – nemesv

관련 문제