如何在 XAML 中指定泛型类型参数

发布于 2024-12-06 23:04:01 字数 359 浏览 0 评论 0原文

我有一个用于我的 MVP - PRISM WPF 应用程序的 BaseView。现在出于某种原因,我们考虑将 _presenter 作为 BaseView 中的模板化字段。

早些时候我有像现在一样的视图 xaml 表示

<base:BaseView xamlns:base="clr address of the dll which had BaseView" >

</base:BaseView>

,因为我已将 BaseView 更改为 BaseView, 那么我该如何编写 Xaml 呢?

I have a BaseView for my MVP - PRISM WPF application. Now for some reason we thought to make the _presenter as a Templated field in the BaseView.

earlier i had the view xaml representation as

<base:BaseView xamlns:base="clr address of the dll which had BaseView" >

</base:BaseView>

now since i have changed the BaseView to BaseView<TPresenter>, So how shall i write the Xaml then?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

农村范ル 2024-12-13 23:04:01

从 .NET 4 Framework 和 XAML 2009 开始,您就可以做到这一点。
参阅 MSDN 上的 XAML 中的泛型

请 实例:

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

对于.NET 3.5:

对于专门针对 WPF 的 XAML 2006 使用,x:Class 还必须
与 x:TypeArguments 位于同一元素上,并且该元素
必须是 XAML 文档中的根元素。根元素必须映射
到具有至少一个类型参数的泛型类型。一个例子是
页面函数。

支持通用用法的可能解决方法包括定义
可以返回泛型类型的自定义标记扩展,或提供
包装从泛型类型派生的类定义,但是
将通用约束扁平化到其自己的类定义中。

You can do it since .NET 4 Framework and XAML 2009.
See Generics in XAML on MSDN

For instance:

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>

For .NET 3.5:

For XAML 2006 usage when specifically targeting WPF, x:Class must also
be provided on the same element as x:TypeArguments, and that element
must be the root element in a XAML document. The root element must map
to a generic type with at least one type argument. An example is
PageFunction.

Possible workarounds to support generic usages include defining a
custom markup extension that can return generic types, or providing a
wrapping class definition that derives from a generic type but
flattens the generic constraint in its own class definition.

-柠檬树下少年和吉他 2024-12-13 23:04:01

万一这种情况发生在某人身上。我有一个类似的场景,我将基类转换为模板类(即 BaseView 到 BaseView)。我不断收到 InitializeComponent() 方法中的错误。我在 x:Class 基类型的 InitializeComponent() 调用中收到 null 异常错误。我能够通过从 XAML 定义中删除表单级事件来解决这些错误。如果我必须保留表单级事件,我需要将它们移动到 BaseView。

In case this happens to someone. I had a similar scenario where I converted my base class to a templated class (i.e. BaseView to BaseView). I kept receiving errors in the InitializeComponent() method. I was receiving the null exception error in the x:Class base type's InitializeComponent() call. I was able to resolve the errors by removing the form-level events from the XAML definition. If I had to keep the form-level events I would need to move them to BaseView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文