我在我的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的末尾? –