我有两种类型的消息:ServerMessage
和UserMessage
。我有一个原始字符串,我必须从中创建此消息。
以下是服务器消息的示例:
:choopa.nj.us.dal.net NOTICE AUTH :*** Looking up your hostname...
以下是用户消息的示例:
:Abc!Abc@2001:123.4234.123.423 PRIVMSG #channelname :hello
首先,我创建一个带有基础知识的RawMessage,比如消息的部分和时间等。
但我已将此RawMessage
绑定到我的WPF UI
,并且在UI的不同部分,它需要来自RawMessage
的不同信息。
一部分,显示所有ServerMessages
的服务器窗口并不关心消息所来自的用户,因为一切都来自服务器。
但是,各个频道窗口需要知道用户。所以我被强制绑定了ServerMessage
类型的服务器和UserMessage
类型的频道窗口。
现在的问题是当我创建RawMessage
时,我是否在那一刻检查它以查看它是什么类型,然后丢弃它以使另外两种类型之一然后绑定它?
或者有更优雅的多态解决方案吗?
答案 0 :(得分:0)
使用data templates。 如果您想以任何方式表示您的消息,只需应用适当的数据模板来控制使用。
答案 1 :(得分:0)
不完全确定你在寻找什么,但在我的情况下,我为消息创建了一个基本类型,然后有各种继承这个的消息类。
我将ListBox
绑定到我的视图模型上的List<Message>
集合,然后我有DataTemplateSelector
根据类型选择适当的模板。这意味着在每个模板中,我可以引用我知道存在于特定消息类中的属性...