Wpf中的ScrollViewer控件

时间:2012-03-15 13:24:09

标签: wpf wpf-controls scrollview

<ScrollViewer VerticalScrollBarVisibility="Auto" >
 <TextBlock Text="{Binding Status}"
            HorizontalAlignment="Center" />
</ScrollViewer>

状态总是我正在添加它,也就是说在后面的代码中我总是这样做:

Status+= Environment.NewLine + "Hi";

ScrollViewer越来越多了,但是我看到的状态是第一个,当我想看到最后一个我需要在下面滚动看到它时,我的问题是:我如何让Scrollviewer在自动下滚动? ,这意味着我总是希望看到最后一个状态不是第一个。

对于破碎的英语感到抱歉。

1 个答案:

答案 0 :(得分:1)

为您的ScrollViewer命名,以便您可以在后面的代码中访问它,如下所示:

<ScrollViewer x:Name="MyScrollViewer" VerticalScrollBarVisibility="Auto" >
 <TextBlock Text="{Binding Status}"
        HorizontalAlignment="Center" />
</ScrollViewer>

然后你可以这样做:

Status+= Environment.NewLine + "Hi";
MyScrollViewer.ScrollToEnd(); 

通过我做MVVM的方式,我可以从View中访问我的ViewModel,所以当View首次加载时,我会在我的ViewModel上订阅PropertyChanged事件,如下所示:

MyViewModel.PropertyChanged += ViewModelChanged;

然后在ViewModelChanged回调中我有这个:

private void ViewModelChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "Status")
        MyScrollViewer.ScrollToEnd();
}

每次ViewModel的Status属性更改时,ScrollViewer现在将滚动到结尾。请记住在离开该屏幕时取消订阅MyViewModel.PropertyChanged以避免内存泄漏。