Commit 738c025

Craig Anderson <canderson@arcresources.com>
2010-10-18 17:16:01
Fixed cancel changes so that it wipes the list and loads only the items that were saved.
1 parent c09f638
Changed files (3)
src/MVPtoMVVM.mvvm/viewmodels/MainWindowViewModel.cs
@@ -22,21 +22,24 @@ namespace MVPtoMVVM.mvvm.viewmodels
             AddNewItemCommand = new SimpleCommand(AddNewItem);
             CancelChangesCommand = new SimpleCommand(RefreshChanges);
             updater = new Synchronizer<MainWindowViewModel>(this.PropertyChanged);
+            TodoItems = new ObservableCollection<TodoItemViewModel>();
             RefreshChanges();
         }
 
         private void RefreshChanges()
         {
-            TodoItems = new ObservableCollection<TodoItemViewModel>(todoItemRepository.GetAll().Select(MapFrom));
+            TodoItems.Clear();
+            foreach (var item in todoItemRepository.GetAll().Select(MapFrom))
+            {
+                TodoItems.Add(item);
+            }
+            
             updater.Update(x => x.TodoItems);
         }
 
         private void AddNewItem()
         {
-            var todoItem = new TodoItem();
-            todoItemRepository.Save(todoItem);
-
-            TodoItems.Add(MapFrom(todoItem));
+            TodoItems.Add(new TodoItemViewModel(todoItemRepository){Parent =  this});
             updater.Update(x => x.TodoItems);
         }
 
src/MVPtoMVVM.mvvm/viewmodels/ToDoItemViewModel.cs
@@ -1,6 +1,7 @@
 using System;
 using System.ComponentModel;
 using System.Windows.Input;
+using MVPtoMVVM.domain;
 using MVPtoMVVM.repositories;
 
 namespace MVPtoMVVM.mvvm.viewmodels
@@ -32,7 +33,7 @@ namespace MVPtoMVVM.mvvm.viewmodels
 
         private void Save()
         {
-            var todoItem = todoItemRepository.Get(Id);
+            var todoItem = todoItemRepository.Get(Id) ?? new TodoItem();
             todoItem.DueDate = DueDate;
             todoItem.Description = Description;
             todoItemRepository.Save(todoItem);
src/MVPtoMVVM.mvvm/MainWindow.xaml
@@ -3,7 +3,7 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Title="MainWindow" Height="350" Width="525">
     <DockPanel LastChildFill="False">
-        <ListView DockPanel.Dock="Top" ItemsSource="{Binding Path=TodoItems}" >            
+        <ListView DockPanel.Dock="Top" ItemsSource="{Binding Path=TodoItems}" >
             <ListView.ItemTemplate>
                 <DataTemplate>
                 <StackPanel Orientation="Horizontal">