0
我创建了用户控件,其数据上下文是从另一个用户控件设置的。当我在主网格中插入这个usercontrol时,它工作正常。datatemplate中的usercontrol和“主”网格之间的区别
<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,例如通过在DbSet上调用Load,然后绑定到本地数据。
ShowListView控制包含此
<ListBox ItemsSource="{Binding Shows}" BorderBrush="Transparent"
HorizontalContentAlignment="Stretch">
和相关视图模型
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(通过具有IEnumarable参数的构造函数)。 – Crooker
如果您只是使用构造函数来创建新的ObservableCollection而不是使用ToObservableCollection方法,该怎么办? – mm8
我有这种方法,因为我没有注意到这个构造函数,并且该方法与foreach。我直接尝试了它(如更新的mainpost中所见),结果相同。 – Crooker