扩展列表框或使用其他选项

本文关键字:其他 选项 列表 扩展 | 更新日期: 2023-09-27 18:20:58

我正在创建某种聊天风格的应用程序。列表框由其ItemSource填充,该ItemSource是列表的绑定。"Message"是一个包含各种属性的自定义类。ListBox包含一个用于正确显示消息项的DataTemplate。

我在使用ListBox时遇到了一些问题:
1.用户无法选择文本
2.当项目被添加到列表中时,ListBox不会自动向下滚动。

我想使用类似TextBox的东西,但我就是不知道如何使用某种DataTemplate并将Text属性绑定到List。当然,文本应该是可格式化的。

我能做些什么来解决我的问题吗?我曾想过将ListBox控件扩展为自动滚动控件,但这并不能解决我关于文本选择的问题。

扩展列表框或使用其他选项

我找到了一个解决方案。我复制了ItemTemplate并将其粘贴到一个新的ItemsControl-Control中。之后,我将一个ScrollViewer缠绕在ItemsControl上。我为ListChanged事件添加了一个事件处理程序。在事件处理程序中,我调用了MatŞj Zábský发布的ItemsControl包装ScrollViewer的ScrollToBottom方法。为了解决文本选择的问题,我使用了一个更改了特定属性的TextBox。有什么方法可以选择WPF文本块吗?

谢谢你,瑞秋和马特。

您当然可以使用DataTemplate并使ListBox中的每个项都成为TextBox。

至于"2。当项目被添加到列表中时,ListBox不会自动向下滚动。",在ListBox的ScrollViewer上调用ScrollToBottom(您可以使用LogicalTreeHelper来查找它)。

您可能需要重新思考,并使用某种ReachTextBox加TextBox进行键入。