我该怎么做?
public partial class MyWindow : View<MyViewModel>
{
}
其中视图定义为
public class View<T> : Window where T : IViewModel, new()
{
}
XAML文件:
<local:View
x:Class="Project.MyWindow"
x:TypeArguments="ViewModels:MyViewModel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:ViewModels="clr-namespace:Mynamespace.ViewModels;assembly=Mynamespace.ViewModels"
xmlns:local="clr-namespace:Project"
>
我收到这个错误...名称View不存在于命名空间Project中...当然它存在。
我得到了这个错误,这真的让我很困惑...属性“TypeArguments”在“http://schemas.microsoft.com/winfx/2006/xaml“命名空间中不存在...当然它存在。
关于如何在wpf中使用泛型作为windows的基类,有什么线索吗?
2条答案
按热度按时间egmofgnx1#
这个问题的答案是永远不要在xaml中使用泛型。总有更好的方法或变通方法。请参见原帖的评论。
编辑!
多亏了Micky邓肯(见上面的评论),这个问题的正确答案可以通过调查这两个链接来找到:
http://msdn.microsoft.com/en-us/library/ms741843(v=vs.110).aspxhttp://www.codeproject.com/Articles/37317/Generic-Support-In-XAML显示器
dw1jzc5e2#
这是一个古老的主题,但正如我来到周围和其他人可能:我不知道从什么时候开始,但在. net 6.0中测试
这种方法是正确的,但如果不知道提问者使用了哪些项目设置,就很难说出哪里出了问题。
示例XAML:
示例代码隐藏
范例基底类别:
说明
这是从TabItem继承的超类。我们都应该知道:
是一个UIElement,它提供了我们所需要的一切!
是什么说的嘿请继承!
重要提示:
原来我们也可以在代码后面继承,也就是:
1.多余的
1.不好的风格,因为你需要在两个地方改变东西
1.* * 但是:可读性更好、更快**
但到目前为止,有一个开放BUG:
链接到有关该主题的MS博客页面,但支持处于非常早期的状态:https://learn.microsoft.com/en-us/archive/blogs/mikehillberg/limited-generics-support-in-xaml