【发布时间】:2016-11-08 20:52:13
【问题描述】:
我正在尝试在 XAML 中显示项目列表。我从公共 API 获取列表,将其转换为我需要的类,然后我想显示它。
public static async Task PopulateListAsync(ObservableCollection<MyClass> myList) {
var listContainer = await GetListAsync();
foreach (var item in listContainer) {
//converting from one class to another, editing some properties and such
myList.Add(item );
}
}
在我的 MainPage.cs 上
public ObservableCollection<MyClass> Value { get; set; }
public MainPage() {
this.InitializeComponent();
Value = new ObservableCollection<MyClass>();
}
private async void Page_Loaded(object sender, RoutedEventArgs e) {
await PopulateListAsync(Value);
}
而且我在 XAML 中显示很好。
但后来我想介绍过滤。所以我得到数据,将它们转换为某个类并将它们插入到一个列表中,然后我使用 LINQ 进行过滤(似乎比在 ObservableCollection 中过滤更容易)。
基本上,我将PopulateListAsync() 替换为FormatListAsync(),而不是将数据直接插入ObservableCollection<>,而是返回List<>。然后我有一个“中间人”功能
public static async Task PopulateListAsync(ObservableCollection<MyClass> myList) {
myList = new ObservableCollection<MyClass>(await FormatListAsync());
//filtering itself isn't implemented yet, but it would be placed here
}
我可能只是循环使用mylist 并将其逐个添加到ObservableCollection<> 中,但我觉得肯定有更好的方法。
我想我应该实现一些 PropertyChanged 事件或类似的东西,但我尝试了一些(例如this one),但没有成功。我觉得我不太明白如何实现它。
【问题讨论】:
-
我不认为你可以做 Value = new ObservableCollection
();因为 Value 属性是字符串类型。可能是错字? -
只是一个错字。对不起。
-
您缺少可观察集合的 OnPropertyChange