在过滤CollectionViewSource期间保留SelectedItem

Jus*_*ony 5 .net c# wpf binding .net-4.0

我有一个像这样过滤的列表框:

var view = CollectionViewSource.GetDefaultView(FilterSource);
view.Filter = FilterCode;
Run Code Online (Sandbox Code Playgroud)

SelectedItem遇到了一个问题,当过滤器与viewmodel代码一起使用时会丢失,如下所示:

VM
{
    public ObservableCollection<Model> Items{get;set;}
    public Model SelectedItem
    {
        get{return _selectedItem;}
        set{_selectedItem = value; NotifyPropertyChanged();}
    }
}
Run Code Online (Sandbox Code Playgroud)

应用过滤器时,将SelectedItem设置为null.但是,除非用户实际点击它,否则我想保留所选项目.如果删除过滤器,则仍应选择所选项目.模型确实有一个IsSelected属性,我一直在试图想办法查询IsSelected属性.然而,视图的绑定不会像我期望的那样工作......或者至少我认为它不能

Jus*_*ony 1

如果发生这种情况,我完成修复的唯一方法如下SelectionChanged

if (e.AddedItems.Count == 0 && e.RemovedItems.Count >= 0)
    SpecialtyListBox.SelectedItem = e.RemovedItems[0];
Run Code Online (Sandbox Code Playgroud)

但是,这看起来确实很老套,并且强制一旦选择了第一个项目就必须始终选择一个项目。在这种情况下,这可能可行,但我仍然想看看是否有人有更好的解决方案?