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

标签 c# .net wpf xaml listbox

我正在创建某种聊天风格的应用程序。 列表框被它的 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/

相关文章:

c# - 如何使用 T-SQL 插入 Identity Server 4 持久化的 ApiSecret 值

c# - 获取文件夹的根目录 +1

C# Windows Form .Net 和 DOS 控制台

wpf - TextBox 上的 MinLines 和 MaxLines 不起作用

c# - 字符串到 boolean 的内联转换

c# - IntegratedWindowsAuthentication 与协商有什么区别?

c# - 如何实现返回 Task<T> 的接口(interface)方法?

c# - 有没有办法发出 System.Threading.Tasks.Task 完成的信号?

wpf - 在 WPF 中向上导航可视化树

c# - 一个 WrapPanel,其中选择划分面板以显示详细 View ?