.net 在MVVM模式中调用ScrollViewer用户控件的LineUp等方法

.net 在MVVM模式中调用ScrollViewer用户控件的LineUp等方法,.net,wpf,mvvm,scrollviewer,.net,Wpf,Mvvm,Scrollviewer,我有一个WPF3.5MVVM应用程序,它在ScrollViewer中有一个文本块。每当文本块中有换行符时,我希望能够调用控件的LineUp/LineDown方法 如何在不违反任何MVVM原则的情况下实现这一点 提前感谢, 萨提亚 当textblock.textChanged事件触发时,您可以执行ScrollViewer.scrollToBottom()。在视图模型中引发事件,并在视图的代码隐藏中处理事件。是否在违反MVVM的情况下在视图的代码隐藏中处理事件?你能给我一些示例代码吗?这根本不违反

我有一个WPF3.5MVVM应用程序,它在ScrollViewer中有一个文本块。每当文本块中有换行符时,我希望能够调用控件的LineUp/LineDown方法

如何在不违反任何MVVM原则的情况下实现这一点

提前感谢,

萨提亚



当textblock.textChanged事件触发时,您可以执行ScrollViewer.scrollToBottom()。

在视图模型中引发事件,并在视图的代码隐藏中处理事件。

是否在违反MVVM的情况下在视图的代码隐藏中处理事件?你能给我一些示例代码吗?这根本不违反MVVM。视图模型对视图一无所知,它只知道它正在引发一个事件。您仍然可以在不实例化视图的情况下实例化和测试视图模型,这是对您处理二者之间的关注点分离情况的严峻考验。感谢您的输入。我在这里看到了一个类似的问题:。这有什么不同吗?对不起,如果我听起来很愚蠢……)但是我在哪里执行这个方法呢?在视图的代码隐藏中?MVVM是否意味着没有代码隐藏?MVVM意味着关注点分离。保持文本块滚动到视图中是布局级别的问题。它类似于对齐:您可以在视图模型中实现对齐属性,然后将其绑定到视图中的
水平对齐
属性;视图模型说“我想要这个对齐方式”,但当属性更改时,视图实际上管理控件的对齐状态?对于按钮,可以使用“命令”进行处理。
            <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="1" Margin="2" Grid.Row="0" Grid.Column="3" Grid.RowSpan="2">
                <ScrollViewer Name="Scroll" VerticalScrollBarVisibility="Auto" MinWidth="120" Height="80" 
                              CanContentScroll="True" 
                              >
                    <TextBlock TextWrapping="WrapWithOverflow" Padding="5" FontSize="10" Text="{Binding Path=GetScrollLogMessage}" DockPanel.Dock="Left" />
                </ScrollViewer>
            </Border>