我有一个WPF应用程序,我正在尝试创建一个与Visual Studio 2010中的“输出窗口”非常相似的“诊断面板”。它只包含一个文本框,其中收集并附加所有类型的输出使用.AppendText()
方法的文本框。
我们有几个客户一直都在离开这个诊断面板,从不清除它。因此,当新输出继续进入时,会显示大量文本...
WPF TextBox有一个MaxLength属性,我将其设置为0.根据MSDN文档,“当此属性设置为0时,可以在控件中输入的文本的最大长度仅受可用限制存储器“。
对于离开此面板的客户,我讨厌让文本和内存不受控制地发生......我认为这可能最终会导致应用程序挂断...
我很好奇是否有一个很好的方法来管理这个...我想在文本框中显示一定数量的行并丢弃最旧的行,因为新的行进来...
有什么想法吗?
谢谢!
答案 0 :(得分:0)
您的代码背后可能有DispatcherTimer
。有了这个,您可以每10分钟(或任何您想要的时间段)将其设置为Tick
。在Tick事件处理程序方法中,您可以获取文本框中的文本,丢弃除要保存的文本之外的所有文本,然后将该文本设置回文本框。
您还可以将文本保存到日志文本文件中。您必须弄清楚要附加到文本文件的内容,这样您就不会多次写入相同的文本。这取决于您的需求究竟是什么。
就像Xaisoft所说,你不应该使用TextBox
来代替TextBlock
。你可能不得不把它放在ScrollViewer
内,我不记得。
答案 1 :(得分:0)
以下是您处理它的方式:
如果您的用户确实想要保存所有内容,那就没有大问题,它已经保存到该文件中。
每次执行应用程序时,或以适当的时间间隔,将您的日志记录滚动到新文件。
答案 2 :(得分:0)
为什么不使用列表框,每个句子都有自己的文本块 - 所以你可以获得虚拟化? http://social.msdn.microsoft.com/Forums/en/wpf/thread/98090161-0abf-4799-bbcb-852dcc0f0608