У меня есть модель представления, которая содержит массив элементов:
public class FooViewModel
{
public FooListItem[] ListItems { get; set; }
...
}
Я создал подкласс для имитации времени разработки с фиктивными данными.
public class FooViewModelMock : FooViewModel
{
public FooViewModelMock()
{
ListItems = <test data population...>
...
}
}
Затем я подключаю фиктивные данные в окне, и это работает нормально.
<Window xmlns:mocks="clr-namespace:FooNS.Mocks"
xmlns:models="clr-namespace:FooNS.Model"
d:DataContext="{d:DesignInstance Type=mocks:FooViewModelMock, IsDesignTimeCreatable=True}"> ...
Затем в окне у меня есть DataGrid и привязка ItemsSource к свойству модели представления:
<DataGrid ItemsSource="{Binding ListItems}"> ...
Тестовые данные отображаются в окне дизайна в порядке, но проблема в том, что контекст данных DataGrid по-прежнему FooViewModelMock, а не FooListItem, поэтому я теряю интеллект и получаю сообщения типа «Не удается разрешить свойство 'xxx' в контексте данных типа 'FooViewModelMock '".
Конечно, я мог бы установить контекст данных в DataGrid:
d:DataContext="{d:DesignInstance models:FooListItem}"
Это возвращает мне мой интеллект, но я теряю фиктивные данные.
Есть ли способ заставить контекст данных времени разработки распространяться через привязку ItemsSource и сохранять данные как intellisense, так и представления дизайна?
Спасибо