【发布时间】:2012-02-21 07:13:02
【问题描述】:
如何在 ScrollViewer 中找到处理 RequestBringIntoView 事件的组件?
它没有暴露在两个 ScrollBar 部分上(反正不是直接暴露)。
感谢您的任何指点...
更新: 相关:我可以获得 ScrollViewer 的 ScrollContentPresenter 部分吗?怎么样?
谢谢——
大图:
我们有一个包含在 ScrollViewer 中的大画布。在运行时,任意数量的用户控件(我将它们称为“Blob”)从 db 添加到画布中。它们的位置和内容来自数据库。用户可以通过单击来“选择”一个 blob,它的外观会发生变化以表明它已被选中。
如果用户使用滚动条将选定的 blob 移出视图,然后单击另一个 blob,则 Canvas 将滚动,因此先前未显示的 blob 再次出现在视图中。我认为这是由于某些对象引发了 RequestBringIntoView,而 ScrollViewer 正在处理它。
希望这是有道理的......
还有更多信息:
向 Scrollviewer 的滚动条 ValueChanged 事件添加了处理程序 (sb_ValueChanged)。这是通过鼠标单击导致滚动的堆栈:
OurControl.sb_ValueChanged() System.Windows.dll!System.Windows.Controls.Primitives.RangeBase.OnValueChanged() System.Windows.dll!System.Windows.Controls.Primitives.ScrollBar.OnValueChanged() System.Windows。 dll!System.Windows.Controls.Primitives.RangeBase.OnValuePropertyChanged() System.Windows.dll!System.Windows.DependencyObject.RaisePropertyChangeNotifications()
System.Windows.dll!System.Windows.DependencyObject.UpdateEffectiveValue() System.Windows.dll!System.Windows.DependencyObject.SetValueInternal() System.Windows.dll!System.Windows.DependencyObject.SetValue() System.Windows.dll!System.Windows.Controls.ScrollViewer.InvalidateScrollInfo() System.Windows.dll!System.Windows.Controls.ScrollContentPresenter.VerifyScrollData()
System.Windows.dll!System.Windows.Controls.ScrollContentPresenter.ArrangeOverride() System.Windows.dll!System.Windows.FrameworkElement.ArrangeOverride()
如果我能找出真正开始恶作剧的 FrameworkElement 是什么……
【问题讨论】:
标签: silverlight-4.0 scrollviewer