TreeView 데이터가 CollectionViewSource Groups 컬렉션에 바인딩되어 있습니다. 이것은 내가 CollectionViewSource의 힘을 사용하여 데이터를 표시 할 수 있도록하고, 데이터 자체도 계층 적 구조를 가지므로 TreeView가 필요한 이유입니다. TreeView의 SelectedItem에 바인딩 된 두 번째 컨트롤이 있습니다.컬렉션 트리 뷰의 소스 그룹보기 - 바인딩 오류
그룹 머리글을 선택하면 다음 예외가 발생하여 프로그램이 충돌합니다.
{"A TwoWay or OneWayToSource binding cannot work on the read-only property 'Name' of type 'MS.Internal.Data.CollectionViewGroupInternal'."}
내 TreeView의 개체에는 다른 컨트롤에서 양방향으로 바인딩되는 Name 속성이 들어 있습니다. 바인딩 엔진이 그룹의 Name 속성을 찾아 바인드하려고 시도하는 것 같습니다. 이 예외가 발생하지 않게하려면 어떻게합니까? 나머지 프로그램에서는 그룹 헤더를 선택할 때 아무 것도 선택하지 않은 것처럼 처리하거나 그룹 헤더를 모두 선택하지 못하게하고 싶습니다. 다음은 간단한 코드 버전입니다.
<TreeView
x:Name="CustomersTree"
ItemsSource="{Binding CustomersViewSource.Groups}"
ItemTemplate="{StaticResource CustomerGroupsTemplate}">
<MyUserControl DataContext="{Binding ElementName=CustomersTree, Path=SelectedItem, Mode=OneWay}" />
<HierarchicalDataTemplate x:Key="CustomerGroupsTemplate" ItemsSource="{Binding Path=Items}" ItemTemplate="{StaticResource CustomerTreeItemTemplate}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="CustomerTreeItemTemplate" ItemsSource="{Binding Customers}">
<StackPanel>
<Image Source="{Binding ImageSource}" />
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</HierarchicalDataTemplate>
이 명확하게하기 위해, 오류가 지금까지 내가 말할 수있는대로 CustomerGroupsTemplate 바인딩과 같은 오류이 한방향 결과에 바인딩을 변경하는 결과이다. 트리의 정보는 예상되는대로 표시되며 예외가 발생하는 경우에만 그룹 헤더가 선택됩니다.
두 개의 이름 바인딩 중 오류를 일으키는 것이 무엇인지 확인 했습니까? 당신은 두 바인딩을 가지고있는 것처럼 보입니다. 하나는 Items에, 다른 하나는 Customers에 있습니다. 제쳐두고 실제로 여기서 양방향 바인딩이 필요합니까? –