2010-10-02 24 views
2

我有一個跟蹤費用的應用程序。用戶通過表單添加新的費用。費用保存在一個集合中。Silverlight:如何對集合進行數據輸入?

我是Silverlight的新手,不確定設置我的應用的最佳方式是什麼。目前,我有一個DataGrid列,我已經定義好格式化ICollection的成員。在後面的代碼中,我將一個集合指定爲數據網格的ItemSource

每筆費用由一個名爲ExpenseInfo的類表示。

爲了增加新的費用,我想我會創建一個ExpenseInfo的新實例,並且數據將表單輸入中的值綁定到它。然後,當用戶點擊提交時,該實例將被添加到集合中。

我不完全確定如何做到這一點。我是否在Xaml中指定它?在代碼隱藏?

此外,我現在將ExpenseInfo項目添加到後備集合,但數據網格不會更改。 (也許我的結合模式是錯的?)這工作在頁面的構造函數:

 CurrentExpensesGrid.ItemsSource = expenses; 
     ExpenseInfo initialExpense = new ExpenseInfo() { Cost = "23", Date = DateTime.Now, WhoPaid = "foo", Name = "bar" }; 
     initialExpense.WhoOwes.Add("baz"); 
     initialExpense.WhoOwes.Add("ftw"); 
     expenses.Add(initialExpense); 

但是,下面的添加按鈕單擊事件處理程序不起作用:

 expenses.Add(newExpense); 
     expenses.Add(new ExpenseInfo() {Cost="2", Name="fje", Date = DateTime.Now, WhoPaid="foe"}); 

並以「沒有按不起作用「,我的意思是新項目不會出現在數據網格中。

回答

0

您可以在Silverlight中使用的ObservableCollection的,

您正在使用的ItemSource可以ExpenseInfo的一個ObservableCollection 1集。

2-必須有一個名爲「添加更多費用」的按鈕。當用戶點擊這個按鈕時,你可以創建一個新的ExpanseInfo對象並將其添加到集合中。

3- observablecollection用於偵聽更改,以便在網格中添加新行。

+0

我是否需要將綁定模式設置爲兩種方式?我能做到這一點,而不指定它的約束力? – 2010-10-03 15:02:41

相關問題