none
MVVM中FlowDocument的使用和解耦相关问题 RRS feed

  • 问题

  • 背景:我们开发了一个在线聊天程序,在做聊天历史纪录的呈现的时候我们用到了FlowDocument<o:p></o:p>

                       关于数据:MessageModel  聊天消息实体<o:p></o:p>

                                         MessageModelList 聊天消息实体集合<o:p></o:p>

            现阶段解决方案:我们为MessageModelList定义了一个监听事件,如果MessageModelList发生变化(Add,Remove,就执行这个事件---MessageModelList中新增的MessageModel new一个Paragraph来接收这个MessageModel,然后把这个Paragraph加到Document中。但是这种办法不能实现ViewViewModel之间的解耦。<o:p></o:p>

     

            我想到的解决方法:用ListBox,把MessageModelList bindingItemSource中,但我们历史消息框只是为了呈现消息而已,不需要ListBox那么多功能,感觉用ListBox有点大材小用了。而且ListBox的机制应该是(我目前理解)当<o:p></o:p>

    MessageModelList发生变化时ListBox会重新生成一次ListBoxItem,这样是否会耗费资源?<o:p></o:p>

             <o:p></o:p>

             我的问题:<o:p></o:p>

    1.       使用ListBox是否合适?能不能把我不需要的ListBox的功能屏蔽掉,能不能把我新增的MessageModelList中的MessageModel生成一个新的ListBoxItem直接加到Document中,而不是重新生成一次ListBoxItem?(如果我对ListBox没有理解错误的话。)<o:p></o:p>

    2.       如果我继续使用FlowDocument是否能实现直接一个Sourcebanding MessageModelList,而不需要我在ViewModel里面去New Paragraph<o:p></o:p>

    3.       有没有更好的解决方案或其他控件符合我所需要的特性。

    <o:p></o:p>

    2015年9月18日 8:48

答案