Весь сценарий не очень понятен из предоставленного вами кода, я думаю, что вы должны удалить атрибуты 'source' => 'non-db', из этих полей, чтобы они были сохранены в базы данных.
Не забудьте выполнить восстановление и выполнить запросы, сгенерированные в результате восстановления, чтобы Sugar создал соответствующие поля в таблице возможностей для сохранения данных загруженного вами файла.
Согласно шаблону MVVM:
Если необходимо обработать события, то существует два способа, которыми я знаю о сделать это:
1: Выставьте команду в своем viewmodel и привязку данных использования для инициирования его. Это - мой предпочтительный путь, например:
class MyViewModel
{
public ICommand ClickCommand { get; set; }
}
<Button Command="{Binding Path=ClickCommand}" />
Если Вы делаете это затем, можно протестировать команду путем простого вызова myViewModel.ClickCommand.Execute
вручную.
2: Выставьте функцию в viewmodel и запишите абсолютный минимум в .xaml.cs
файл, чтобы обработать событие и вызвать функцию, например:
class MyViewModel
{
public void HandleClick(){ }
}
<Button Click="MyClickHandler">
//.xaml.cs file
public void MyClickHandler( Object sender, EventArgs e ) {
m_viewModel.HandleClick()
}
Если Вы делаете это, то можно протестировать путем простого вызова myViewModel.HandleClick
вручную. Вы не должны должны быть беспокоиться поблочным тестированием MyClickHandler
кодируйте, поскольку это - только 1 строка!
Это кажется, что у Вас есть обработчик событий для события отбрасывания непосредственно в Вашем классе ViewModel. Имело бы больше смысла иметь обработчик в Вашем уровне UI, который в свою очередь вызовет функцию в Вашем ViewModel? Таким образом, Ваш модульный тест мог просто вызвать функцию (моделирующий операцию перетаскивания, что касается ViewModel).
Плюс, это лучше разделило бы Ваш ViewModel от Вашего кода UI.
Не сгенерируйте событие, просто назовите обработчики (что означает, что они должны быть общедоступными, и вероятно взять меньше обработчика событий центральные аргументы). Выезд, как это сделано в Мече (http://www.codeplex.com/caliburn) с помощью "Действий".
Почему бы вам не использовать фиктивный фреймворк, например Moq
? Ознакомьтесь с их быстрым запуском, там есть образец издевательства над событиями. URL-адрес: http://code.google.com/p/moq/wiki/QuickStart