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

时间:2012-01-22 19:20:23

标签: c# .net wpf xaml listbox

我正在创建某种聊天风格的应用程序。 Listbox正在被其ItemSource填充,这是一个绑定到List。 “Message”是包含各种属性的自定义类。 ListBox包含一个DataTemplate,用于正确显示Message-Item。

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

我想使用类似TextBox的东西,但我无法弄清楚如何使用某种DataTemplate并将Text-Property绑定到List。当然,文本应该是可格式化的。

我有什么办法可以解决我的问题吗?我想将ListBox-Control扩展为自动滚动控件,但这不能解决我关于文本选择的问题。

3 个答案:

答案 0 :(得分:2)

我找到了解决方案。 我复制了ItemTemplate并将其粘贴到一个新的ItemsControl - Control中。之后,我在ScrollViewer周围包裹了ItemsControl。我在ListChanged事件中添加了一个事件处理程序。在事件处理程序中,我调用了MatějZábský发布的ItemsControl-Wrapping ScrollViewer的ScrollToBottom-Method。 为了解决有关文本选择的问题,我使用了一个更改了特定属性的TextBox。 Any way to make a WPF textblock selectable?

谢谢Rachel和Matěj。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您可能需要重新思考并使用某种RichTextBox和文本框进行输入。