动态数据SourceList新添加的项目在选择/取消选择时不会刷新

问题描述 投票:0回答:1

我有一个 SourceList 和一个 ReadOnlyObservableCollection。

    public SourceList<T> SourceList { get; set; } = new SourceList<T>();
    public ReadOnlyObservableCollection<T> ActiveList;

并使用以下代码进行绑定:

   SourceList.Connect()
      .Filter(criteria, ListFilterPolicy.ClearAndReplace)
      .Transform((item, i) => { item.DisplayOrder = i + 1; return item; })
      .Bind(out ActiveList)
      .Subscribe();

列表显示在窗口中:

   listItemsControl.ItemsSource = ViewModel.ActiveList;

我将任何项目的 IsSelected 绑定到 ToggleButton 的 IsChecked。 一切都很好,直到我将新项目添加到 SourceList 中。 对于新添加的项目,绑定不起作用。

感谢您提供解决问题的任何想法。

reactiveui dynamic-data
1个回答
0
投票

您在检查

criteria
时过滤 SourceList 的是
IsSelected
吗?如果是这样,您可能需要添加一个
AutoRefresh

   SourceList.Connect()
     .AutoRefresh(x=> x.IsSelected)
     .Filter(criteria, ListFilterPolicy.ClearAndReplace)
     .Transform((item, i) => { item.DisplayOrder = i + 1; return item; })
     .Bind(out ActiveList)
     .Subscribe();

默认情况下,SourceList 只会将集合更改推送到管道中,并且不会考虑任何给定项目中的属性更改。通过添加

AutoRefresh
,对源中该属性的更改将导致其父级被发送到管道中。

© www.soinside.com 2019 - 2024. All rights reserved.