2010-10-02 43 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

相关问题