gpt4 book ai didi

wpf - 接口(interface)/抽象的 XAML 集合 "Could not create an instance"

转载 作者:行者123 更新时间:2023-12-04 23:56:37 33 4
gpt4 key购买 nike

我在 ViewModel 中有一个 ObservableCollection<INode>其中 INode是一个接口(interface)。

View XAML 就像:

<Windows x:Class="XXX.Window1"
xmlns:vw="clr-namespace:XXX.Views"
xmlns:vm="clr-namespace:XXX.ViewModels"
xmlns:n="clr-namespace:XXX.Models.Nodes"
... />
...
<vm:MyView>
<vw:MyView.DataContext>
<vm:MyViewModel>
<vm:ComponentViewModel.Nodes>
<n:MyNode /> <--- PROBLEM HERE
<n:MyNode />
</vm:ComponentViewModel.Nodes>
</vm:MyViewModel>
</vw:MyView.DataContext>
</vm:MyView>
...

现在这在运行时有效,但在设计时间窗口中不起作用,它显示:无法创建“MyNode”类型的实例

知道如何解决这个问题吗?


interface INode
{
string Name { get; set; }

string Status { get; }
}

abstract class Node : INode
{
public string Name { get; set; }

public abstract string Status { get; }

public override int GetHashCode()
{
unchecked
{
return Name.GetHashCode(); // <--- PROBLEM WAS HERE, Name = null
}
}
}

class MyNode : Node
{
public override NodeStatus Status { get { return "test"; } }
}

最佳答案

每个案例似乎都是独一无二的。这是我在解决它之后学到的东西:不仅构造函数中的异常可以生成该错误消息。如果 GetHashCode() 等某些系统方法抛出异常,它会显示相同的消息(有时在设计时)。

其他人可能对设计时流程有更多提示或更多见解。

关于wpf - 接口(interface)/抽象的 XAML 集合 "Could not create an instance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7161612/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com