0

我有 2 种类型的消息:ServerMessageUserMessage. 我有一个原始字符串,我必须从中创建此消息。

这是一个服务器消息的示例:

:choopa.nj.us.dal.net NOTICE AUTH :*** Looking up your hostname...

这是用户消息的示例:

:Abc!Abc@2001:123.4234.123.423 PRIVMSG #channelname :hello

所以首先我创建一个带有基本信息的 RawMessage,比如消息的部分和时间等。

但我已将此绑定RawMessage到我WPF UIRawMessage.

一方面,服务器窗口显示所有ServerMessages不关心消息来自的用户,因为一切都来自服务器。

但是,各个频道窗口需要了解用户。所以我被迫将服务器与ServerMessage类型绑定,通道窗口与UserMessage类型绑定。

现在的问题是,当我创建 时RawMessage,我是否在那一刻检查它以查看它是什么类型,然后将其丢弃以制作其他 2 种类型之一,然后绑定它?

或者对此有更优雅的多态解决方案吗?

4

2 回答 2

0

不完全确定您在寻找什么,但在我的情况下,我为消息创建了一个基本类型,然后拥有各种继承它的消息类。

我将 a 绑定ListBox到我的视图模型上的集合List<Message>,然后我有一个DataTemplateSelector根据类型选择适当的模板。这意味着在每个模板中,我可以引用我知道存在于特定消息类中的属性...

于 2013-08-16T10:29:55.057 回答
0

使用数据模板。当您想以任何方式表示您的消息时,只需应用适当的数据模板来控制正在使用的控件。

于 2013-08-16T09:58:53.400 回答