<ScrollViewer VerticalScrollBarVisibility="Auto" >
<TextBlock Text="{Binding Status}"
HorizontalAlignment="Center" />
</ScrollViewer>
状态总是我正在添加它,也就是说在后面的代码中我总是这样做:
Status+= Environment.NewLine + "Hi";
ScrollViewer越来越多了,但是我看到的状态是第一个,当我想看到最后一个我需要在下面滚动看到它时,我的问题是:我如何让Scrollviewer在自动下滚动? ,这意味着我总是希望看到最后一个状态不是第一个。
对于破碎的英语感到抱歉。
答案 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以避免内存泄漏。