Silverlight: как сделать ввод данных в коллекцию? - PullRequest
2 голосов
/ 03 октября 2010

У меня есть приложение для отслеживания расходов. Пользователи добавляют новые расходы через форму. Расходы хранятся в коллекции.

Я новичок в 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"});

Под словом «не работает» я подразумеваю, что новые элементы не отображаются в сетке данных.

1 Ответ

0 голосов
/ 03 октября 2010

Вы можете использовать наблюдаемую коллекцию в серебряном свете,

1-коллекция, которую вы используете в ItemSource, может быть наблюдаемой коллекцией ExpenseInfo.

2- Должна быть кнопка «Добавить дополнительные расходы». Когда пользователь нажимает на эту кнопку, вы можете создать новый объект ExpanseInfo и добавить его в коллекцию.

3 - observablecollection прослушивает изменения, поэтому в сетку будет добавлен новый ряд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...