Я создал пользовательский элемент управления, чей datacontext установлен из другого пользовательского элемента управления. Когда я вставляю этот usercontrol в основную сетку, он отлично работает.Разница между usercontrol в datatemplate и в «основной» сетке
<Grid>
<local:ShowListView DataContext="{Binding ShowListViewModel}"/>
</Grid>
Но когда я ввожу его через DataTemplate, как этот
<UserControl.Resources>
<DataTemplate DataType="{x:Type showViewModels:ShowListViewModel}">
<local:ShowListView />
</DataTemplate>
</UserControl.Resources>
<Grid>
<ContentControl Content="{Binding CurrentView}"/>
</Grid>
Он бросает эту ошибку
Привязка данных непосредственно к магазину запроса (DbSet, DbQuery, DbSqlQuery, DbRawSqlQuery) не поддерживается. Вместо этого запишите DbSet с данными, например, вызвав Load на DbSet, а затем привяжите к локальным данным.
управления ShowListView содержит этот
<ListBox ItemsSource="{Binding Shows}" BorderBrush="Transparent"
HorizontalContentAlignment="Stretch">
и соответствующий ViewModel
public ObservableCollection<ShowModel> Shows { get; set; }
public ShowListViewModel()
{
using (var db = new MSDBContext())
{
var shows = (from s in db.Shows select s).ToList();
Shows = new ObservableCollection<ShowModel>(shows);
}
}
Почему первый метод работает без проблем, но второй один бросает ошибку? Что я должен изменить, что он работает с Datatemplate?
Так что я удалил DataContext (я пробовал оба варианта, прежде чем без успеха) и добавил ToList показать переменную. И это все еще бросает мне ошибку. Метод ToObservableCollection' просто принимает IEnumerable и изменяет его на Observable Collection (через contructor с аргументом IEnumarable). – Crooker
Что делать, если вы просто используете конструктор для создания нового ObservableCollection вместо использования метода ToObservableCollection? – mm8
У меня был этот метод, потому что я не заметил этот конструктор, и метод был с foreach. Я попробовал это прямо (как видно из обновленного mainpost) с тем же результатом. – Crooker