2

我想创建一个将转换的值转换器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 不是真正的类型。有人可以帮我做什么吗?

4

2 回答 2

1

不要在转换器中执行此操作。在 ViewModel 中执行此操作。这样,您的 ViewModel 将拥有对DbSet<T>(不仅仅是一个object)的强类型引用,并且会知道什么是类型T

于 2013-07-01T18:18:32.370 回答
1

有:

 DbSet<Thread> Threads;

利用:

ObservableCollection<Thread> Threads;            

 using (var db = new MyContext())
        {
            Threads =new ObservableCollection<Thread>(db.Threads);
        }
于 2020-09-11T06:32:12.003 回答