【发布时间】:2021-07-25 23:22:00
【问题描述】:
我有一个 XAML 看起来像的 UserControl:
<Grid>
<FlowDocumentScrollViewer Name="ProvisionStatusMonitor" Document="{Binding Document}" SourceUpdated="OnSourceUpdated"/>
</Grid>
代码隐藏看起来像
private void OnSourceUpdated(object sender, DataTransferEventArgs e)
{
FlowDocumentScrollViewer docViewer = (FlowDocumentScrollViewer) sender;
var scrollViewer = (ScrollViewer)docViewer.Template
.FindName("ProvisionStatusMonitor", docViewer);
scrollViewer.ScrollToEnd();
}
但这似乎不起作用。当文档更改时,我认为应该触发此事件,并且我可以自动滚动到文档底部。我错过了什么?
【问题讨论】:
-
"ProvisionStatusMonitor"是错误的。它必须是"PART_ContentHost"。它是 FlowDocumentScrollViewer 可视化树中的一个组件。 -
是什么让您认为
SourceUpdated会被调用? Binding 源永远不会改变。 -
@Clemens 我正在查看与 FlowDocumentScrollViewer 相关的可能事件,而 SourceUpdated 是我想出的最接近的事件。那么 XAML 应该是什么样子呢?我需要在 XAML 上放一些东西来表明有一些代码隐藏要被调用。
-
您可以附加 XAML 中答案中显示的 DataContextChanged 事件,而不是 StatusView 构造函数。