Skip to content

Instantly share code, notes, and snippets.

@tmyt
Created June 18, 2014 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tmyt/922cf4f580217234c188 to your computer and use it in GitHub Desktop.
Save tmyt/922cf4f580217234c188 to your computer and use it in GitHub Desktop.
public class ListViewOffset
{
public double GetValue(ListBox listBox)
{
// Get parts
var scrollViewer = listBox.FindElement<ScrollViewer>();
var scrollBar = scrollViewer.FindElement<ScrollBar>();
return scrollBar.Value;
}
}
public static class VisualTreeHelperExtension
{
public static T FindElement<T>(this DependencyObject rootElement)
where T : DependencyObject
{
var q = new Queue<DependencyObject>();
q.Enqueue(rootElement);
while (q.Count != 0)
{
var e = q.Dequeue();
if (e is T) return e as T;
var c = VisualTreeHelper.GetChildrenCount(e);
for (var i = 0; i < c; ++i)
{
q.Enqueue(VisualTreeHelper.GetChild(e, i));
}
}
return null;
}
public static Rect GetBoundingRectWithMargin(this FrameworkElement element, FrameworkElement relativeTo)
{
var transform = element.TransformToVisual(relativeTo);
var r = new Rect(0, 0, element.ActualWidth, element.ActualHeight);
r = transform.TransformBounds(r);
var m = element.Margin;
return new Rect(new Point(r.Left - m.Left, r.Top - m.Top), new Point(r.Right + m.Right, r.Bottom + m.Bottom));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment