我正在创建某种聊天风格的应用程序。 Listbox正在被其ItemSource填充,这是一个绑定到List。 “Message”是包含各种属性的自定义类。 ListBox包含一个DataTemplate,用于正确显示Message-Item。
当我使用ListBox时,我遇到了一些问题:
1.用户无法选择文字
2.当项目添加到列表时,ListBox不会自动向下滚动。
我想使用类似TextBox的东西,但我无法弄清楚如何使用某种DataTemplate并将Text-Property绑定到List。当然,文本应该是可格式化的。
我有什么办法可以解决我的问题吗?我想将ListBox-Control扩展为自动滚动控件,但这不能解决我关于文本选择的问题。
答案 0 :(得分:2)
我找到了解决方案。
我复制了ItemTemplate并将其粘贴到一个新的ItemsControl
- Control中。之后,我在ScrollViewer
周围包裹了ItemsControl
。我在ListChanged
事件中添加了一个事件处理程序。在事件处理程序中,我调用了MatějZábský发布的ItemsControl-Wrapping ScrollViewer的ScrollToBottom-Method。
为了解决有关文本选择的问题,我使用了一个更改了特定属性的TextBox。
Any way to make a WPF textblock selectable?
谢谢Rachel和Matěj。
答案 1 :(得分:1)
您当然可以使用DataTemplate并使ListBox中的每个项目成为TextBox。
对于“2.当项目被添加到列表时,ListBox不会自动向下滚动。”,在ListBox的ScrollViewer上调用ScrollToBottom(您可以使用LogicalTreeHelper来查找它)。
答案 2 :(得分:0)
您可能需要重新思考并使用某种RichTextBox和文本框进行输入。