将样式的TargetType属性设置为泛型类

时间:2009-06-16 03:35:18

标签: c# wpf xaml targettype

是否可以将XAML中样式的TargetType属性设置为Generic Class?

public class Selector<T> : Control { }

然后在xaml

<Style x:TargetType="Selector">
<Setter Property="MyProperty" Value="Green" />
</Style>

这不起作用,因为Selector缺少类型参数。

3 个答案:

答案 0 :(得分:2)

您无法绑定到像List<T>这样的开放泛型类型,但您可以通过定义占位符类型绑定到封闭的泛型类型,如List<Person>

<强> C#

class People : List<Person> {}

<强> XAML

<Style TargetType="{x:Type People}"> ... </Style>

更新:您需要为样式指定TargetType x:Key属性,而不是两者。

答案 1 :(得分:1)

泛型在XAML中的支持相当有限。话虽这么说,Mike Hillberg有一篇非常有趣的帖子here关于自定义标记扩展可能会有所帮助。

答案 2 :(得分:0)

我认为你使用普通的WPF,而不是Silverlight?如果我没弄错的话,你可以这样说:

<Style TargetType="{x:Type Control}" x:Key="{x:Type Control}">
</Style>