我试图显示XAML中的项目列表。我从公共API获取列表,将其转换为我需要的类,然后我想显示它。ObservableCollection不显示在UI中
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中进行过滤似乎更容易)。
基本上我与FormatListAsync()
其中,而不是直接插入数据到ObservableCollection<>
,返回一个List<>
取代PopulateListAsync()
。然后,我有一个“中间人”功能
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属性是字符串类型。一个错字可能? –
只是一个错字。抱歉。 – rancor1223
你是缺少onPropertyChange为observablecollection – Master