将样式的TargetType属性设置为通用类

4
在XAML中,是否可以将样式的TargetType属性设置为通用类?
public class Selector<T> : Control { }

然后在XAML中。
<Style x:TargetType="Selector">
<Setter Property="MyProperty" Value="Green" />
</Style>

这样是行不通的,因为Selector缺少一个类型参数。

3个回答

2

您无法绑定到开放式泛型类型,例如List<T>,但是您可以通过定义占位符类型来绑定到封闭式泛型类型,例如List<Person>

C#:

class People : List<Person> {}

XAML:

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

更新:在样式中,您只需要指定TargetTypex:Key属性之一,而不是两者都要。


我在类似xaml+泛型的情况下找到了这个解决方案。每个泛型已经有10个封闭类型,我希望不需要复制样式信息。 - vanja.
是的...据我所知,XAML目前还不能直接支持泛型。 - Gishu

1

泛型在XAML中的支持相对较少。话虽如此,Mike Hillberg在这里发表了一篇非常有趣的文章,介绍了自定义标记扩展的方法,可能会有所帮助。


0

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

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

是的,它是 WPF,但我需要将它连接到一个通用类 - 我会更新问题以使其更清晰。 - vanja.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接