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