在我的程序中,我試圖設計一個輸出窗口來顯示日誌信息。對於現在我結合爲一個字符串,並儘快日誌數據進入更新信息在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