我正在编写一个 WPF 应用程序,我目前正在将一些重用代码重构为我的其他视图模型可以继承的基本 ViewModel 类。
此基类上的一个 Property 字段是
public class MessageParentBase
{
MessageParentBase() {}
public string Name;
}
internal ObservableCollection<MessageParentBase> _GridData = new ObservableCollection<MessageParentBase>();
我有一个后续的财产声明
public ObservableCollection<MessageParentBase> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
这很好用,我的问题是 inerited 类实际上使用了 follow 类
Public class ChatMessage : MessageParentBase
{
public string Message;
}
并且视图包含一个绑定到此 GridData 属性的数据网格,但应该绑定到 ChatMessage 类的 Message 字段的列是空白的,并且在 MessageParentBase 类中找到的字段被填充。
所以我认为视图不知道从 MessageParentBase 类转换为 ChatMessage 存在问题。
我可以通知视图对象将属于“ChatMessage”类型。
我确实尝试将属性声明移动到继承的视图模型
public ObservableCollection<ChatMessage> GridData
{
get { return _GridData; }
set { _GridData = value; }
}
但这给了我以下错误:-
无法将类型“System.Collections.ObjectModel.ObservableCollection”隐式转换为“System.Collections.ObjectModel.ObservableCollection”
我需要在视图级别进行投射还是可以更改视图模型以更好地实现这一点?
任何建议将不胜感激。
埃姆林