在我的程序中,我试图设计一个输出窗口来显示日志信息。对于现在我结合为一个字符串,并尽快日志数据进入更新信息在viewmodel中创建控件实例
例:
<FlowDocument>
<Paragraph>
<Run DataContext="{Binding}" Text="{Binding OutputText}"/>
</Paragraph>
</FlowDocument>
(流文件是一个丰富的文本框内)
在我的视图模型,这是我如何更新我的outputText
OutputText += loggingInfoString;
的问题是,字符串是不可变的数据类型,我不喜欢创建一个新的字符串,每一次新的大的想法ta进来。这是一个不必要的开销。
RichTextBox中有一个名为AppendText通过方法,我认为将使用类似一个StringBuilder,以添加到字符串。我遇到的问题是能够访问ViewModel中的AppendText。
我想过让视图模型内的RichTextBox的实例,并结合在RichTextBox到一个在视图模型。我认为这违反了MVVM,但我不完全确定。还有另外一种方法可以解决这个问题吗?或者我应该在ViewModel中创建RichTextBox实例?
例: //视图模型
RichTextBox Output;
//更新方法
Output.AppendText(loggerInfoText);
// XAML中
<RichTextBox DataContext="{Binding Output}" />
提前
谢谢!
太棒了!感谢您的迅速回复。我不相信我甚至没有想到这一点。有时候作为程序员,我们忽略了最简单的事情。再次感谢:) – CodingMadeEasy 2015-02-09 21:04:17
我有一个快速的问题。如果我在viewmodel中有一个事件处理程序。将appendtext添加到视图模型的事件处理程序是否是不好的做法? – CodingMadeEasy 2015-02-10 15:40:49
取决于你的意思。调用从注入到视图模型的接口追加,并在事件处理程序中执行,这不是问题。事件处理程序本身不应附加到WPF组件事件。使用命令,甚至行为。但这已经是MVVM的更高级了。很难看到你需要从这一端;-) – 2015-02-10 17:40:16