尝试以编程方式填充列表框我已编写以下代码:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
TestDBContext context = new TestDBContext();
context.Load(context.GetTaskQuery());
var taskList = GetTasks();
foreach (var t in taskList)
{
ListBoxTaskItems.Items.Add(t);
}
}
private List<TaskItem> GetTasks()
{
var tasks = from t in context.Tasks
select new TaskItem(t);
return tasks.ToList();
}
问题是上面的代码总是返回一个空的ListBox。有没有人知道如何修改现有代码或其他方式以编程方式用数据条目填充列表框?
编辑#1:调试时我注意到在context.GetTaskQuery()之前执行了GetTasks()方法,我猜这是一个空ListBox的原因。不过我不知道如何修复代码以填充ListBox。
谢谢!
答案 0 :(得分:1)
有人发布了另一个解决方案,然后无论出于什么原因删除它,但这可能会更好。我只是尝试了一些我正在研究的代码并发现它更快:
Binding bind = new Binding();
bind.Source = GetTasks();
ListBoxTaskItems.SetBinding(ListBox.ItemsSourceProperty, bind);
(将其替换为foreach声明)。
答案 1 :(得分:0)
我会在你的foreach声明中尝试这样做:
ListBoxItem listBoxItem = new ListBoxItem();
listBoxItem.Content = t;
ListBoxTaskItems.Items.Add(listBoxItem);
我做了类似的事情,它在将Grids添加到ListBox时起作用,因此只要TaskItem可以作为内容来接受它。