WPF基于一种类型绑定到多种类型

时间:2013-08-16 09:51:47

标签: c# wpf data-binding polymorphism

我有两种类型的消息: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 UI,并且在UI的不同部分,它需要来自RawMessage的不同信息。

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

但是,各个频道窗口需要知道用户。所以我被强制绑定了ServerMessage类型的服务器和UserMessage类型的频道窗口。

现在的问题是当我创建RawMessage时,我是否在那一刻检查它以查看它是什么类型,然后丢弃它以使另外两种类型之一然后绑定它?

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

2 个答案:

答案 0 :(得分:0)

使用data templates。 如果您想以任何方式表示您的消息,只需应用适当的数据模板来控制使用。

答案 1 :(得分:0)

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

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