WPF Generic Windows

前端之家收集整理的这篇文章主要介绍了WPF Generic Windows前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想制作一个适用于不同类型T的可重用 WPF窗口.
我有一个设计师和一个代码隐藏文件.

我可以这样做吗?

/*  Code behind file */
public partial class MyWindows<T> : Window
{}
不幸的是,你想要的不太可能.

更新:在.NET 4.0之前(即最初编写此答案时),XAML support for consuming generic types was very limited;例如泛型只适用于根元素.在.NET 4.0中,解除了一些限制.

在.NET 4.0中,您可以构建完全专用的泛型类型.因此,虽然XAML本身仍然没有泛型类型的概念,但它可以引用泛型类型的特化. (类似地,XAML不能表达概念List<>但它可以表达概念List< int>).有关详细信息,请参阅MSDN page “Generics in XAML”.

您可以使用x:TypeArguments Directive构造专用泛型类型的实例.例如,x绑定到XAML的命名空间,sys绑定到System命名空间,scg绑定到System.Collections.Generic,并且您自己的MyWindows命名空间绑定到我的then:

>< my:MyWindows x:TypeArguments =“x:String”>会构造一个MyWindows< string>实例.
>< scg:List x:TypeArguments =“sys:Tuple(sys:String,sys:Int32)”>将构造一个List< Tuple< string,int>>

因此,在XAML中使用泛型类型不再是问题!

唉,您想在XAML中定义泛型类型.那是不可能的.这里有两种解决方法.首先(并根据您对另一个问题的评论,我认为这是您想要的),您可以简单地将类型作为普通参数传递.如果这样做,您将失去泛型提供的所有编译时安全功能,但通常这些功能不相关.其次,您可以在XAML中使用代码隐藏定义普通的非泛型类,并简单地使用通用基类来重用代码.这样,您至少可以获得一些适当的仿制药安全性和重复使用.

猜你在找的Windows相关文章