Я создаю образовательное приложение для изучения терминологии ... используя UWP через Xamarin.Forms для ввода данных. Это представление предназначено для создания списков терминов и сохранения их в моей базе данных. В данном случае мы составляем список костей тела. Вот как это выглядит:
Pretty simple UI. Every time I click "Add New Item(s)" it creates a "<*New Item*>" Запись вверху моего CollectionView . Я заменяю «<* New Item *>» нужным словом, а затем нажимаю кнопку «Сохранить».
Кнопка «Добавить новый элемент (ы)» работает как чемпион, но кнопка «Сохранить» "кнопка больна. После первого нажатия кнопки «Сохранить» список отправляется в мою базу данных json. Когда я проверяю базу данных, я вижу «<* New Item *>» вместе с остальной частью списка, например:
"name": "Bones of the Body, Common",
"choiceFormat": "6x1",
"items": [
"<*New Item*>",
"Ankle Bone",
"Arm Bone",
"Breastbone",
"Cheek Bone",
"Collarbone",
"Forearm Bone (Large)",
"Forearm Bone (Small)",
"Hammer",
"Hard Palate (back)",
"Heel Bone",
"Hip Bone",
"Knee Cap",
"Leg Bone (Large)",
"Leg Bone (Small)",
"Lower Jaw",
"Rib",
"Rib Cage",
"Shoulder Blade",
"Spine",
"Stirrup",
"Tailbone",
"Thigh Bone",
"Tongue Bone",
"Upper Jaw"
],
"spellable": true
Теперь в моем пользовательском интерфейсе я нажимаю на верхнюю запись для «<* New Item *> "и переименуйте его в" Anvil "вот так ...
Then when I click save, the database list stays the same... it still says "<*New Item*>" and not "Anvil".
So I dropped a breakpoint in the save function and the debugger's telling me that here's where the issue is... the ObservableCollection that's the source for my CollectionView (named OCItems) doesn't say "Anvil", it's stuck on "<*New Item*>". (The location of the breakpoint is noted in my ViewModel code below.)
My other controls (Choice Format and Spellable) bind, update, and save to the database just fine. What's going on with the Entry controls in my CollectionView? Why don't they update when I replace the text in them? Note that both {Binding}s are TwoWay.
Here's the relevant code:
XAML
...
ViewModel
...
public ObservableCollection<string> OCItems { get; set; }
public ICommand AddItemSlot { get; set; }
public ICommand SaveAnswerSet { get; set; }
...
...
// (in constuctor)
AddItemSlot = new Command(() =>
{
OCItems.Insert(0, "<*New Item*>");
});
SaveAnswerSet = new Command(() =>
{
App.Database.Save(OCItems); // BREAKPOINT
});
...
Спасибо за ваше внимание.
С уважением, Дэвид