I find out an easy way for Silverlight 4 to synchronize two
ListBox
or any that has a
ScrollContentPresenter
I started with
silverlightdatagridscroll article I modified the method
GetScrollBar
to this:
public ScrollContentPresenter GetScrollPresenter(DependencyObject dep)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dep); i++)
{
var child = VisualTreeHelper.GetChild(dep, i);
if (child != null && child is ScrollContentPresenter)
return child as ScrollContentPresenter;
else
{
ScrollContentPresenter sub = GetScrollPresenter(child);
if (sub != null)
return sub;
}
}
return null;
}
Now, I implemented the following in my code:
GetScrollPresenter(scrollViewer0).LayoutUpdated += (s1, e1) =>
{
try
{
if(GetScrollPresenter(scrollViewer1)!=null && GetScrollPresenter(scrollViewer0) !=null)
GetScrollPresenter(scrollViewer1).SetVerticalOffset(GetScrollPresenter(scrollViewer0).VerticalOffset);
}
catch
{
}
};
And the last thing, in my case I have the following in the XAML:
<ScrollViewer Padding="10" x:Name="scrollViewer0" Style="{StaticResource PageScrollViewerStyle}" Margin="10">
<ListBox x:Name="SourceList" Background="#FFE8F8FF" />
</ScrollViewer
>