我正在尝试使用MongoDB作为数据库创建一个wpf应用程序。我正在使用MVVM,在视图模型中,他们有以下构造函数:
public MainViewModel(IDataService dataService)
{
_dataService = dataService;
_dataService.GetData(
(item, error) =>
{
if (error != null)
{
// Report error here
return;
}
_items = item.ToList();
});
}
我想要完成的是尝试将_items
数据绑定到我的数据表。我看到wpf应用程序打开但我有一个空表,上面的_items
为空。以下是界面IDataService
:
namespace ComplexDemo.Model
{
public interface IDataService
{
Task GetData(Action<DataItem [], Exception> callback);
}
}
和我的idataservice.GetData
功能:
public async Task GetData(Action<DataItem [], Exception> callback)
{
List<DataItem> items = new List<DataItem>();
// Use this to connect to the actual data service
var client = new MongoClient("mongodb://localhost:27017");
var db = client.GetDatabase("test");
var collection = db.GetCollection<BsonDocument>("users");
var list = await collection.Find(new BsonDocument()).ToListAsync();
foreach(var doc in list)
{
var data = new DataItem
{
Id = doc.GetElement("_id").Value.AsObjectId.ToString(),
Name = doc.GetElement("Name").Value.AsString,
City = doc.GetElement("City").Value.AsString,
State = doc.GetElement("State").Value.AsString
};
items.Add(data);
}
callback(items.ToArray(), null);
}