private void LayoutRoot_Loaded(object sender, RoutedEventArgs e) { if (MyMainPage.floatChatReal == null) { MyMainPage.initializeFloatChat(); } System.Windows.Media.GeneralTransform gt = lstTraditionalHost.TransformToVisual(Application.Current.RootVisual); Point offset = gt.Transform(new Point(lstTraditionalHost.Width + 30, 0)); MyMainPage.floatChatReal.Position = offset; MyMainPage.refreshFloatChat(lstTraditionalHost.ActualHeight / 1.5, lstTraditionalHost.ActualHeight); }
/// <summary> /// Scrolls and item into view. /// </summary> /// <param name="item">The item to scroll into view.</param> public void ScrollIntoView(object item) { if (this.scrollViewer != null && this.containersByItem.ContainsKey(item)) { MatchingTermItemContainer container = this.containersByItem[item]; if (System.Windows.Media.VisualTreeHelper.GetParent(container) != null) { System.Windows.Media.GeneralTransform transform = container.TransformToVisual(this.scrollViewer); double verticalOffset = transform.Transform(new Point(0, 0)).Y; if (verticalOffset + container.ActualHeight > this.scrollViewer.ViewportHeight) { this.scrollViewer.ScrollToVerticalOffset(this.scrollViewer.VerticalOffset + (verticalOffset - this.scrollViewer.ViewportHeight) + container.ActualHeight); } else if (verticalOffset < 0) { this.scrollViewer.ScrollToVerticalOffset(this.scrollViewer.VerticalOffset + verticalOffset); } } } }