2011-03-22 57 views
0

試圖填補列表框編程我已經寫下面的代碼:如何在Silverlight中以編程方式填充ListBox和數據條目?

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(); 
    } 

的問題是,上述送花兒給人的代碼返回一個空列表框。有誰知道如何修改現有的代碼或以編程方式用數據條目填充列表框的其他方式?

編輯#1:在調試時我注意到GetTasks()方法在context.GetTaskQuery()之前執行,我覺得這是空ListBox的原因。不過,我不知道如何修復代碼才能填充ListBox。

謝謝!

+0

將網格作爲內容添加時,我必須做的一件事是設置行高(通過RowDefinition),即使我的內部內容(例如Rectangles)具有指定的內容。所以它可能是內容被添加,但沒有被顯示。 – Stonetip 2011-03-23 13:31:19

回答

1

有人張貼了另一個解決方案,然後出於任何原因刪除它,但這可能會更好。我剛剛嘗試了一些我正在編寫的代碼,發現它的運行速度更快:

Binding bind = new Binding(); 

bind.Source = GetTasks(); 

ListBoxTaskItems.SetBinding(ListBox.ItemsSourceProperty, bind); 

(將此替換爲foreach語句)。

0

我想嘗試像這樣你的foreach語句中:

ListBoxItem listBoxItem = new ListBoxItem(); 

listBoxItem.Content = t; 

ListBoxTaskItems.Items.Add(listBoxItem); 

我做同樣的事情,並添加電網到ListBox的時候,所以只要一TaskItem是內容接受的東西應該它的工作原理做到這一點。

相關問題