【发布时间】:2015-02-09 20:11:54
【问题描述】:
在我的程序中,我试图设计一个输出窗口来显示日志记录信息。目前,我正在绑定到一个字符串,并在日志数据进入后立即更新信息。
例如:
<FlowDocument>
<Paragraph>
<Run DataContext="{Binding}" Text="{Binding OutputText}"/>
</Paragraph>
</FlowDocument>
(流文档在富文本框中)
在我的视图模型中,这就是我更新输出文本的方式
OutputText += loggingInfoString;
问题是字符串是不可变的数据类型,我不喜欢每次新数据进入时都创建一个新字符串的想法。这是不必要的开销。
RichTextBox 有一个名为 AppendText 的方法,我假设它会使用类似 Stringbuilder 的东西来添加到字符串中。我遇到的问题是能够访问 ViewModel 中的 AppendText。
我想在 ViewModel 中创建一个 RichTextBox 实例并将 RichTextBox 绑定到 ViewModel 中的实例。我认为这违反了 MVVM,但我不完全确定。还有其他方法可以解决这个问题吗?还是应该只在 ViewModel 中创建 RichTextBox 实例?
例如: // 视图模型
RichTextBox Output;
// 更新方法
Output.AppendText(loggerInfoText);
// Xaml
<RichTextBox DataContext="{Binding Output}" />
提前致谢!
【问题讨论】:
标签: c# wpf mvvm richtextbox viewmodel