C# 在模型集合中获取模型的值
我有一个集合C# 在模型集合中获取模型的值,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,我有一个集合ConversationModel,其中有两个模型。我想得到收藏的第一件物品的价值。我尝试了以下代码var obj=ConversationCollection.First()获取值,但它始终返回null。此处填充了模型的属性,但不在其范围内。我如何获得这些值 public class ConversationModel { public SendMessageModel SMM { get; set; } public ReceivedMessageModel R
ConversationModel
,其中有两个模型。我想得到收藏的第一件物品的价值。我尝试了以下代码var obj=ConversationCollection.First()
获取值,但它始终返回null。此处填充了模型的属性,但不在其范围内。我如何获得这些值
public class ConversationModel
{
public SendMessageModel SMM { get; set; }
public ReceivedMessageModel RMM { get; set; }
}
以下是我创建收藏的方式:
ObservableCollection<ConversationModel> cm = new ObservableCollection<ConversationModel>();
foreach (DataRow convo in dataTable.Rows)
{
string _messageID = (string)convo["MessageID"];
string message = (string)convo["UserMessage"];
string username = (string)convo["FromUser"];
DateTime datetime = (DateTime)convo["MessageDateTime"];
string messageStatus = (string)convo["MessageStatus"];
string mdt = "";
if (datetime.Date == DateTime.Now.Date) mdt = datetime.ToString("t");
if (username == ClientUsername)
{
SendMessageModel smm = new SendMessageModel
{
MessageIdentifier = _messageID,
UserDisplayName = ClientDisplayName,
SendMessage = message,
MessageTime = mdt,
MessageStatus = (Status)Enum.Parse(typeof(Status), messageStatus)
};
cm.Add(new ConversationModel { SMModel = smm });
}
else
{
ReceivedMessageModel rmm = new ReceivedMessageModel
{
MessageIdentifier = _messageID,
ClientDisplayName = RecipientDisplayName,
MessageTime = mdt,
ReceivedMessage = message
};
cm.Add(new ConversationModel { RMM = rmm });
}
}
ConversationCollection = cm;
如果
ConversationCollection
是一个ObservableCollection
,则它只能包含ConversationModels
,这就是您的两个数据模板都不会被应用的原因
如果将其类型更改为例如observedcollection
,则可以向其添加ReceivedMessageModels
和SendMessageModels
然后,您可以通过施放以下物品重新获得第一件物品:
var receivedMessageModel = ConversationCollection[0] as ReceivedMessageModel;
if (receivedMessageModel != null)
{
//the first item is a ReceivedMessageModel
}
else
{
var sendMessageModel = ConversationCollection[0] as SendMessageModel;
// the first item is A SendMessageModel
}
在集合的每个条目中,您的模型似乎都是空的。你能告诉我你在哪里把模型添加到集合中/你在哪里创建集合吗?我添加了创建集合的代码。你的问题看起来很混乱-你的
ConversationModel
类有SendMessageModel
和ReceivedMessageModel
属性,而你的cm集合只包含单个SendMessageModel
和ReceivedMessageModel
实例。这些类是否扩展了会话模型?另外,您正在将cm构建为一个局部变量,但您正在查看的是哪个集合是空的?@Peregrine最后一行ConversationCollection=cm代码>您的代码不一致。如果此处显示的是ConversationModel,即具有SendMessageModel和ReceivedMessageModel属性的类,则无法将SendMessageModel或ReceivedMessageModel实例添加到cm
。
var receivedMessageModel = ConversationCollection[0] as ReceivedMessageModel;
if (receivedMessageModel != null)
{
//the first item is a ReceivedMessageModel
}
else
{
var sendMessageModel = ConversationCollection[0] as SendMessageModel;
// the first item is A SendMessageModel
}