2013-06-27 3 views
6

ビューモデルにObservableCollectionがあり、CollectionViewSourceListBoxが表示されています。ライブシェイプ/グループ化を使用したWPFリストボックス - アイテムが再グループ化されたときに選択を維持する方法?

ListBoxは、CollectionViewSourceに結びついています。 CollectionViewSourceは、ObservableCollectionにバインドし、アイテムをソートしてグループに整理します。 CollectionViewSourceIsLiveGroupingRequestedIsLiveSortingRequestedプロパティを使用してライブソートとライブグループ化が有効になっているため、基になるビューモデルオブジェクトが変更されるたびに、並べ替えられ、ListBoxで再グループ化されます。これはすべて正常に動作します。

問題は選択と関係しています。 ListBoxのアイテムを選択して、何らかの方法でビューモデルオブジェクトが変更されたためにグループ化された場合、そのアイテムは新しいグループに移動すると選択解除されます。

選択したアイテムを再度グループ化しても、選択を維持するにはどうすればよいですか?

ここでは、問題を示す簡単なトリムダウンXAMLの例を示します。 AllItems内のオブジェクトの1つのCategoryプロパティが変更された場合、ライブシェイプのおかげでアイテムは正しく再グループ化されます。ただし、その項目が選択されていれば、選択されなくなります。

<Grid> 

    <Grid.Resources> 
     <CollectionViewSource x:Key="MyItems" Source="{Binding AllItems}" IsLiveGroupingRequested="True" IsLiveSortingRequested="True"> 
      <CollectionViewSource.SortDescriptions> 
       <componentModel:SortDescription PropertyName="Category" /> 
       <componentModel:SortDescription PropertyName="Name" /> 
      </CollectionViewSource.SortDescriptions> 
      <CollectionViewSource.GroupDescriptions> 
       <PropertyGroupDescription PropertyName="Category" /> 
      </CollectionViewSource.GroupDescriptions> 
     </CollectionViewSource> 
    </Grid.Resources> 

    <ListBox ItemsSource="{Binding Source={StaticResource MyItems}}"> 
     <ListBox.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
           <TextBlock Text="{Binding Name}" /> 
         </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
      </GroupStyle> 
     </ListBox.GroupStyle> 
    </ListBox> 

</Grid> 

解決策をインターネットで検索しましたが、何も見つかりませんでした。 this threadが見つかりましたが、解決策が投稿されていませんでした。

私はこの作業をしようとしている私の髪を引っ張っています。私は大いに助けていただければ幸いです!

答えて

2

現在のところ、単純な解決策はありません。

私は2つのソリューションを見ることができます:

1)は手動でユーザーがライブ更新を停止します。 ジャンプするデータでの作業を許可するのは誤りです。

例:MSからのWCFログビューアの一時停止ボタン。

2)データを更新する前に、選択したアイテムを覚えておいてください。更新が終了すると、選択が返されます。

例:How To Prevent WPF DataGrid From De-Selecting SelectedItem When Items Updated?

関連する問題