2009-06-24 89 views
3

我想在XAML代码的Windows.Resources部分中使用泛型类型。要附加的对象我的泛型集合由的ObservableCollection继承的集合的通知,如下图所示:在Window.Resources中使用泛型类型

public class PresentationModalCollection<T> : ObservableCollection<T> 
    { 
     public PresentationModalCollection(List<T> list) : base(list) 
     { 

     } 

    } 

有是返回列表中的ObservableCollection,如下图所示的扩展方法:

public static class ExtensionMethods 
    { 
     public static PresentationModalCollection<T> ToObservableCollection<T>(this List<T> list) 
     { 
      return new PresentationModalCollection<T>(list); 
     } 
    } 

现在,我想在我的Window.Resources中使用PresentationModalCollection,如下所示:

<Window.Resources> 
     <LearningWPF:PresentationModalCollection x:Key="customers"> 
      <LearningWPF:Customer FirstName="Mohammad" LastName="Azam" /> 
     </LearningWPF:PresentationModalCollection> 


    </Window.Resources> 

当然,上面的代码不起作用。有没有办法做到这一点,而不必创建一个从ObservableCollection继承的类CustomerCollection?

+1

我认为它不支持在.NET 3.5中,但对于.NET 4.0,它将被支持。看看下面的链接=> http://msdn.microsoft.com/en-us/library/dd489466(VS.100).aspx – azamsharp 2009-06-24 18:54:32

回答

2

Mike Hillberg有一些extensions可以帮助它,并工作得很好。我同意为每个想要打包的类型创建一个CustomerCollection和集合类型将是霸道。 Sacha Barber也有在XAML中使用泛型的解决方案,但他的网站似乎已经超过了他目前的带宽限制。