【发布时间】:2021-03-23 03:46:41
【问题描述】:
我想创建通用行为。我的问题是 XAML 中的泛型声明。
public class GenericBehavior<T> : Behavior<DataGrid>
where T : class
{
}
我不能使用x:TypeArguments,因为我没有松散的 XAML 文件。
在 WPF 和面向 .NET Framework 4 时,您可以使用 XAML 2009 与 x:TypeArguments 一起使用的功能,但仅适用于松散的 XAML(XAML 不是标记编译的)。用于 WPF 的标记编译 XAML 和 XAML 的 BAML 形式目前不支持 XAML 2009 关键字和 特点
我发现一些 workaround 带有 MarkupExtension 但行为不起作用。
在我目前的解决方案I attach behavior in code.
有什么想法吗?
【问题讨论】:
-
为什么需要使用泛型行为?添加类型参数可能是一种解决方法?
-
@Didier:我想知道是否可以在没有复杂解决方法的情况下使用 XAML。
-
一个更简单的解决方法可能是为您要使用的
T的每个具体实例创建一个具体的非泛型子类,即public class FooBehavior : GenericBehavior<Foo> {}。
标签: wpf xaml generics behavior