private double ComputeScrollVerticalOffset(Lyric lyrics) { ListViewItem item = (ListViewItem)Main_ListView.ContainerFromItem(lyrics); if (item is null) { return(0); } var transformToVisual = item.TransformToVisual(Main_ListView); return(transformToVisual.TransformPoint(new Point()).Y + (item.ActualHeight / 2) - (Root_Viewer.ActualHeight / 2)); }
private double GetItemPosition(ISubtitleLineUi line) { ListViewItem container = Main_ListView.ContainerFromItem(line) as ListViewItem; if (container == null) { return(0); } var transform = container.TransformToVisual(Main_ListView); Point position = transform.TransformPoint(new Point()); double result = (position.Y) + (container.ActualHeight / 2D) - (Root_ScrollViewer.ActualHeight / 2D); return(result > 0 ? result : 0); }