0
我有一個FilterViewModel的列表,我在樹形視圖中顯示。 FilterViewModel具有一系列Children,它們也是FilterViewModel類型,每個FilterViewModel都是「可檢查的」。像這樣:將XViewModel的列表轉換爲X列表
public abstract class FilterViewModel
{
public string ID { get; set; }
public virtual IEnumerable<FilterViewModel> Children { get; private set; }
public bool? IsChecked { get; set; }
private FilterModel _filter;
public FilterViewModel(Filter filter, IEnumerable<Filter> checkedFilters)
{
_filter = filter;
CheckFilters(checkedFilters);
}
}
在創建樹視圖,相應的過濾器進行檢查,像這樣:
private void SetChildrenChecked(IEnumerable<Filter> filters,
IEnumerable<FilterViewModel> visibleList)
{
foreach (var filter in filters)
{
foreach (var filterVM in visibleList
.Where(filterVM => filter.ID == filterVM.ID))
{
if (filter.Children.Any())
{
SetChildrenChecked(filter.Children, filterVM.Children);
}
else
{
filterVM.Children.ForEach(c => c.IsChecked = true);
}
}
}
}
不過,我很努力找出做相反的最好方法 - 返回一個每個檢查過的FilterViewModel在層次結構中的列表。
有沒有人知道一個快速解決方案?我假設這將是不好的做法,並可能會混淆視圖模型上的事項,以揭露視圖模型...