我正在创建某种聊天风格的应用程序。 列表框被它的 ItemSource 填充,它是一个列表的绑定(bind)。 “消息”是包含各种属性的自定义类。 ListBox 包含一个 DataTemplate,用于正确显示 Message-Item。
我在使用列表框时遇到了一些问题:
1.用户不能选择文本。
2. 将项目添加到列表时,列表框不会自动向下滚动。
我想使用类似 TextBox 的东西,但我就是不知道如何使用某种 DataTemplate 并将 Text-Property 绑定(bind)到 List。当然,文本应该是可格式化的。
有什么办法可以解决我的问题吗?我考虑过将 ListBox-Control 扩展为自动滚动控件,但这并不能解决我关于文本选择的问题。
最佳答案
我找到了一个解决方案。
我复制了 ItemTemplate 并将其粘贴到新的 ItemsControl
-Control 中。之后,我在 ItemsControl
周围包装了一个 ScrollViewer
。我向 ListChanged
事件添加了一个事件处理程序。在事件处理程序中,我调用了 Matěj Zábský 发布的 ItemsControl-Wrapping ScrollViewer 的 ScrollToBottom-Method。
为了解决有关文本选择的问题,我使用了一个更改了特定属性的 TextBox。
Any way to make a WPF textblock selectable?
谢谢 Rachel 和 Matěj。
关于c# - 扩展列表框还是使用替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963882/