2009-08-11 59 views
1

嗨,我有什么,我认为是一个有趣的问题:MVVM WPF数据绑定到Skype类聊天?

大家都知道,爱Skype的聊天界面:每个消息被封闭在一个泡沫,用表情和链接能力,以及作为头像在左边。

如果我正在创建类似Skype的界面,什么是最理想的WPF组件来容纳每封邮件?

我正在使用MVVM,因此我所有的消息都作为ObservableCollection存储在ViewModel中。

我有问题,结合一个RichTextBox,所以我已经调查绑定到一个列表框,其中每个列表项是消息,而每个项目的样式有Skypey边框和头像等

任何想法?

+0

来归玩笑,我有那个例子想想为每个聊天消息使用一个用户控件,其中用XAML图像和文本块对用户控件进行了样式设置,但是随着新聊天的进行,我需要动态添加这些用户控件。它变得非常复杂。 – bluebit 2009-08-11 08:35:37

回答

0

我看到的解决方案是你应该使用DataTemplate和Style。这个想法如下:每个文本消息由类对象表示。现在,当你在模板中绑定你的消息时,你明确告诉你如何让你的消息看起来像。 您最好创建一个用户控件,它将知道如何表示您的消息。

举例表示类似的想法,但是想法是一样的:

<Window.Resources> 
<DataTemplate DataType="{x:Type model:MessageModel}"> 
    <ed:Callout AnchorPoint="0,1.5" Margin="10" CalloutStyle="RoundedRectangle" Content="{Binding Path=Text}" Fill="#FFF4F4F5" FontSize="14.667" HorizontalAlignment="Left" Height="100" Stroke="Black" VerticalAlignment="Top" Width="200" />        
</DataTemplate> 
</Window.Resources> 

<Grid> 
    <ItemsControl ItemsSource="{Binding Path=MsgList}" /> 
</Grid> 

对于需要连接Microsoft.Expression.Drawing.sll与混合4