[英]ReactiveUI BindTo not updating the ReactiveList
我有一个名为GroupedIssueTypeSearchFilter
的ReactiveObject
类:
public class GroupedIssueTypeSearchFilter : ReactiveObject
{
public int CategoryID { get; set; }
public string CategoryTitle { get; set; }
int selectionCode;
public int SelectionCode
{
get { return selectionCode; }
set { this.RaiseAndSetIfChanged(ref selectionCode, value); }
}
public ReactiveList<IssueTypeSearchFilter> IssueTypeFilterList { get; set; }
public GroupedIssueTypeSearchFilter(int catID, string catTitle, List<IssueTypeSearchFilter> issueTypeList)
{
this.CategoryID = catID;
this.CategoryTitle = catTitle;
this.IssueTypeFilterList = new ReactiveList<IssueTypeSearchFilter>(issueTypeList);
}
}
然后在IssueTypeFilterTableViewDelegate
类中,其属性之一是GroupedIssueTypesFilter
:
public ReactiveList<GroupedIssueTypeSearchFilter> GroupedIssueTypesFilter { get; set; }
我也有一个ViewController
及其ViewModel
。 我使用BindTo
将视图模型属性之一绑定到该类:
IssueTypeFilterTableViewDelegate tvd = new IssueTypeFilterTableViewDelegate();
this.WhenAnyValue(vm => vm.ViewModel.GroupedStandardIssueTypesTV)
.BindTo(this, x => x.tvd.GroupedIssueTypesFilter);
GroupedStandardIssueTypesTV
类型为ReactiveList<GroupedIssueTypeSearchFilter>
。
稍后,通过在ViewModel
进行一些操作, 更改了GroupedStandardIssueTypesTV.IssueTypeFilterList
值。
但是, GroupedIssueTypesFilter.IssueTypeFilterList
值不会更改 。 我需要关闭视图,重新打开它,然后它的值将被更新。
如何使GroupedIssueTypesFilter
跟随变化GroupedStandardIssueTypesTV
?
完全同意@ ramonesteban78的回答 。
但是您可以采用另一种方式,用Clear和Add / AddRange方法重新填充您的ReactiveList。
像这样:
public GroupedIssueTypeSearchFilter(int catID, string catTitle, List<IssueTypeSearchFilter> issueTypeList)
{
this.CategoryID = catID;
this.CategoryTitle = catTitle;
this.IssueTypeFilterList.Clear();
this.IssueTypeFilterList.AddRange(issueTypeList);
}
不要忘记在此处阅读有关“禁止通知”的信息: https : //docs.reactiveui.net/zh/user-guide/lists/index.html
我认为您的问题是您没有在ReactiveList中进行声明,例如:
public ReactiveList<IssueTypeSearchFilter> IssueTypeFilterList { get; set; }
尝试这个:
ReactiveList<IssueTypeSearchFilter> issueTypeFilterList
public ReactiveList<IssueTypeSearchFilter> IssueTypeFilterList
{
get { return issueTypeFilterList; };
set { this.RaiseAndSetIfChanged(ref issueTypeFilterList, value); };
}
没有RaiseAndSetIfChanged
您将无法将更改传达到集合中的视图。
您还可以订阅ReactiveList公开的可观察对象,例如:
ItemsAdded
ItemsRemoved
ItemsMoved
Changed
etc
此处的更多信息: https : //docs.reactiveui.net/en/user-guide/lists/index.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.