C# 当向XAML中的文本块添加新行时,在WPF中将ScrollViewer滚动到底部

C# 当向XAML中的文本块添加新行时,在WPF中将ScrollViewer滚动到底部,c#,wpf,scrollviewer,eventtrigger,C#,Wpf,Scrollviewer,Eventtrigger,我试图将垂直滚动条保持在底部(最新的条目),但目前,滚动条只是停留在相同的位置,因此当内容添加到字符串中时,滚动条会移到顶部 我知道我可以使用代码隐藏中的ServerScroll.ScrollToEnd()属性将条移动到末尾。但是有没有一种方法可以在xaml中自动实现这一点?(这样我就不必每次添加到字符串时都调用此属性) XAML 代码隐藏 private void示例\u单击(对象发送方,路由目标) { ServerConsole+=“asdf\r\n”;//绑定到TextBlock Se

我试图将垂直滚动条保持在底部(最新的条目),但目前,滚动条只是停留在相同的位置,因此当内容添加到字符串中时,滚动条会移到顶部

我知道我可以使用代码隐藏中的
ServerScroll.ScrollToEnd()
属性将条移动到末尾。但是有没有一种方法可以在xaml中自动实现这一点?(这样我就不必每次添加到字符串时都调用此属性)

XAML


代码隐藏

private void示例\u单击(对象发送方,路由目标)
{
ServerConsole+=“asdf\r\n”;//绑定到TextBlock
ServerScroll.ScrollToEnd();
}

使用文本框,对
TextBox.TextChanged作出反应

如果每次更改
TextBlock
Text
属性时都要滚动到末尾,我建议您切换到
TextBox
,以便您可以使用
System.Windows.Interactivity
连接到其
TextChanged
事件:


使用文本块,对
按钮作出反应。单击

如果希望在单击
按钮时滚动到末尾,可以使用相同的技术连接到其
单击事件:


使用列表视图,对
CollectionChanged

看起来您确实想使用
ItemsControl
而不是
TextBlock
,因为您谈论的是条目和所有内容。您可以切换到
列表视图
并连接到其
集合更改
事件:


在您的视图模型中:

public observetecollection MyList{get;}=new observetecollection();

在什么条件下,您希望滚动到底?每次
ScrollViewer
的内容更改时?每次
TextBlock
Text
更改时?我认为您在代码隐藏中的解决方案非常清晰明了,顺便说一句,我怀疑在XAML中使用它会很棘手,而且不太清晰。@corentPane每次都会在绑定到
TextBlock
的字符串中添加一行新行,以便随时可以看到最新的条目。我只是认为在每个新条目之后添加
.ScrollToEnd()
是多余的,我想知道是否有一种更短的方法,也许是在xaml属性中。我想不会吧?谢谢你提供了清晰的例子!我想这样就可以了