C# 扩展列表框还是使用替代方案?

C# 扩展列表框还是使用替代方案?,c#,.net,wpf,xaml,listbox,C#,.net,Wpf,Xaml,Listbox,我正在创建某种聊天风格的应用程序。 Listbox由其ItemSource填充,ItemSource是列表的绑定。“Message”是一个包含各种属性的自定义类。列表框包含一个用于正确显示消息项的数据模板 我在使用列表框时遇到了一些问题: 1.用户无法选择文本。 2.将项目添加到列表中时,列表框不会自动向下滚动 我想使用文本框之类的东西,但我就是不知道如何使用某种DataTemplate并将Text属性绑定到列表。当然,文本应该是可格式化的 我能做些什么来解决我的问题吗?我曾考虑将ListBox

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

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

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


我能做些什么来解决我的问题吗?我曾考虑将ListBox控件扩展为自动滚动控件,但这并不能解决我在文本选择方面的问题。

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

您当然可以使用DataTemplate,将ListBox中的每个项目都设置为文本框

至于“2.当一个项目被添加到列表中时,列表框不会自动向下滚动”,请调用列表框的滚动查看器(您可以使用它来查找)。

我找到了一个解决方案。 我复制了ItemTemplate并将其粘贴到一个新的
ItemsControl
-控件中。之后,我在
ItemsControl
周围包装了一个
ScrollViewer
。我向
ListChanged
事件添加了一个eventhandler。在eventhandler内部,我调用了Matěj Zábský发布的ItemsControl包装ScrollViewer的ScrollToBottom方法。 为了解决有关文本选择的问题,我使用了一个特定属性已更改的文本框。


谢谢你,Rachel和Matěj.

为什么不使用
ItemsControl
并实现你自己的东西来自动滚动呢?我怀疑您是否需要跟踪
SelectedItem
,如果没有它,您可以选择文本(前提是您使用
标签而不是
文本块