В значительной степени решить эту проблему можно по сей день. С помощью некоторых методов расширения в Silverlight Toolkit, мы можем найти внутреннюю вертикальную ScrollBar
для любого FrameworkElement
по
Scrollbar myScrollBar = myContainerElement.GetVisualDescendants()
.OfType<ScrollBar>()
.Where(foundScrollBar => foundScrollBar.Orientation == Orientation.Vertical)
.FirstOrDefault();
Затем мы можем приложить к ее событиям, как Scroll
или ValueChanged
.
Тогда есть еще один полезный метод расширения Toolkit можно использовать:
Rect? rect = myElement.GetBoundsRelativeTo(myViewportElement);
if (rect.HasValue)
{
if (rect.Value.Top <= myViewportElement.ActualHeight)
{
// do some stuff
}
}
Спасибо, но это не достаточно для меня, к сожалению. : -/... Когда элементы управления находятся внутри панелей/scrollviewers, события «Loaded» будут срабатывать мгновенно, если я не использую «VirtualizingStackPanel» или тому подобное, которые я не могу использовать, потому что мне нужен более сложный макет, и это un-smoothes прокручивается до точки бесполезности в моем случае. – herzmeister
@herzmeister - Извините, это не сработает для вас. Я не могу думать ни о чем другом, что было бы в данный момент. – ChrisF