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属性中。我想不会吧?谢谢你提供了清晰的例子!我想这样就可以了