2011-03-07 3 views
2

MVVM을 사용하여 항목 이름을 변경하면 목록 상자를 다시 정렬 할 수 있습니까?항목의 세부 정보가 변경된 경우 목록 상자의 순서 새로 고침

내 목록 상자는 INotifyPropertyChanged를 상속받은 'People'클래스를 저장하는 Observable 컬렉션에 바인딩됩니다. 목록 상자는 속성 '이름'에 정렬되며 목록 상자의 항목 중 하나에 대해 '이름'값을 변경하면 값이 변경되었지만 목록 상자가 자동으로 자체 정렬되지 않음을 알 수 있습니다.

내가 다른 페이지로 이동하여 목록 상자를 돌아올 때

<ListBox ItemsSource="{Binding Source={StaticResource SortedItems}}" 
      SelectedItem="{Binding CurrentSelectedPerson}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Path=Name}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

을 다음과 같이 초기 정렬이 CollectionViewSource

<CollectionViewSource x:Key="SortedItems" Source="{Binding PeopleList}"> 
     <CollectionViewSource.SortDescriptions> 
      <scm:SortDescription PropertyName="Name"/> 
     </CollectionViewSource.SortDescriptions> 
    </CollectionViewSource> 

통해 수행하고 목록 상자에서 사용하는 올바른 순서를 가지고 ,하지만 사람의 이름을 변경하면 목록 상자가 새로 고쳐지지 않습니다. MVVM을 유지하면서 어떻게이 작업을 수행 할 수 있습니까?

답변

2

그럼 대안

이 스레드를 확인하려면 아래 링크도

http://social.msdn.microsoft.com/Forums/en/wpf/thread/d7eda358-ca16-4164-8773-fd92527c7795

에서 언급 한 바와 같이 사용자 정의 CollectionViewSource를 구현하는이 내가 생각 알려진 문제가 해결되지이다 yet.Try http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cb7c5c62-7ca9-49b5-91a0-379581b1c1aa/

+0

첫 번째 링크의 링크를 통해 구현 한 솔루션을 얻을 수있었습니다. ObservableCollection에서 개체를 제거/추가했습니다. 가장 우아한 솔루션은 아니지만 새로운 인터페이스의 상속/구현을 필요로하지 않으므로 가장 깨끗하고 빠른 것으로 보입니다. – n00b

1

This link은이 질문에 대해 토론하고 몇 가지 답변을 제시합니다.

관련 문제