如何将DbSet转换为ObservableCollection
本文关键字:ObservableCollection 转换 DbSet | 更新日期: 2023-09-27 18:20:41
我想创建一个值转换器,将DbSet<MyEntity>
转换为ObservableCollection<MyEntity>
,这样我就可以轻松地将其绑定到WPF XAML中的组合框。我希望它适用于所有类型。
到目前为止,我已经尝试过了。
class DbSetToObservableCollectionConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
DbSet<T> d = (DbSet<T>)value; //How do I know what to put in place of T
return new ObservableCollection<T>(d);
}
catch(Exception ex)
{
return value;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
这不起作用,因为T不是真正的类型。有人能帮我做什么吗?
拥有:
DbSet<Thread> Threads;
用途:
ObservableCollection<Thread> Threads;
using (var db = new MyContext())
{
Threads =new ObservableCollection<Thread>(db.Threads);
}
不要在转换器中执行此操作。在ViewModel中执行此操作。这样,您的ViewModel将具有对DbSet<T>
(而不仅仅是object
)的强类型引用,并且将知道T
是什么类型。