我在我的Wpf應用程序中使用caliburn micro。當內容更多時,我想向下滾動文本框。我不想使用視圖的代碼來實現這個功能。我有谷歌它,並找到以下鏈接。如何使用caliburn.micro使用視圖模型在text_changed事件中執行TextBox.scrolltoend
Use view's code behind directly。雖然這可能是一種解決方法,但我對這種方法並不滿意,因爲我認爲這是糟糕做法的出發點。
我發現多了一個參考使用Rx (reactive extensions)
Reactive Extensions for .NET (Rx) in WPF - MVVM
我不知道如何在卡利微的情況下用它來實現類似的功能。
類似的問題被另一個stackoverflow成員here問了但是沒有滿意的答覆。
我必須做兩件事。
- 訂閱文本Changed事件
- 獲得從發送器參數的文本框對象(或以某種方式與文本框對象),並執行它
ScrollToEnd()
方法我估計是可能的或者通過卡利微IHandle
或Rx(Reactive extensions)。有人可以幫我實現這個功能嗎?
如果你想遵循MVVM,你應該使用代碼隱藏。這是一個與視圖相關的操作,因此將邏輯與視圖放在一起是有意義的(XAML/Code-Behind)。這不是「業務邏輯」,因爲你是視圖模型類不應該關心誰在使用它。如果不是一個好的GUI,而是一個基於命令的消費者,爲什麼基於命令的消費者會關心滾動到TextBox/RichTextBox的末尾? –