public void SetHorizontalOffset (double offset)
{
if (offset < 0 || ViewportWidth >= ExtentWidth)
offset = 0;
else if (offset + ViewportWidth >= ExtentWidth)
offset = ExtentWidth - ViewportWidth;
if (HorizontalOffset == offset)
return;
HorizontalOffset = offset;
if (Orientation == Orientation.Horizontal)
InvalidateMeasure ();
else
InvalidateArrange ();
if (ScrollOwner != null)
ScrollOwner.InvalidateScrollInfo ();
}