0

我有一個ReactiveObject類名爲GroupedIssueTypeSearchFilterReactiveUI BindTo不更新ReactiveList

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中的更改?

回答

0

我覺得你的問題是,你是不是在提高你的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

+0

我之前已經嘗試這一點,它不工作。每次我重新加載表格時,列表都沒有更新。 – currarpickt

3

@ramonesteban78 answer完全同意。

但是你可以用另一種方式去填充你的ReactiveList中的Clear和Add/AddRange方法。

像這樣:

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/en/user-guide/lists/index.html