// Token: 0x0600304C RID: 12364 RVA: 0x000D8F84 File Offset: 0x000D7184 internal static void OnNavigateUriChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { IInputElement inputElement = d as IInputElement; if (inputElement != null) { Uri uri = (Uri)e.NewValue; if (uri != null) { FrameworkElement frameworkElement = d as FrameworkElement; if (frameworkElement != null && (frameworkElement is Path || frameworkElement is Canvas || frameworkElement is Glyphs || frameworkElement is FixedPage)) { if (FixedPage.CanNavigateToUri(uri)) { Hyperlink.SetUpNavigationEventHandlers(inputElement); frameworkElement.Cursor = Cursors.Hand; return; } frameworkElement.Cursor = Cursors.No; return; } else { FrameworkContentElement frameworkContentElement = d as FrameworkContentElement; if (frameworkContentElement != null && frameworkContentElement is Hyperlink) { Hyperlink.SetUpNavigationEventHandlers(inputElement); } } } } }
internal static void OnNavigateUriChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { IInputElement element = d as IInputElement; // // We only set up spoofing prevention for known objects that are IInputElements. // However, for backward compatibility we shouldn't make this callback fail since // other places such as FixedTextBuilder use NavigateUri e.g. for serialization. // if (element != null) { Uri navigateUri = (Uri)e.NewValue; // // We use a different code path for Path, Canvas, Glyphs and FixedPage to maintain backward compatibility // with the original separate Hyperlink implementation of this (which didn't execute CanNavigateToUri). // if (navigateUri != null) { FrameworkElement fe = d as FrameworkElement; if (fe != null && ((fe is Path) || (fe is Canvas) || (fe is Glyphs) || (fe is FixedPage))) { if (FixedPage.CanNavigateToUri(navigateUri)) { SetUpNavigationEventHandlers(element); fe.Cursor = Cursors.Hand; } else { fe.Cursor = Cursors.No; } } else { FrameworkContentElement fce = d as FrameworkContentElement; if (fce != null && (fce is Hyperlink)) { SetUpNavigationEventHandlers(element); } } } } }
// Token: 0x06002D81 RID: 11649 RVA: 0x000CCF08 File Offset: 0x000CB108 internal static Uri GetLinkUri(IInputElement element, Uri inputUri) { DependencyObject dependencyObject = element as DependencyObject; if (inputUri != null && (FixedPage.CanNavigateToUri(inputUri) || (inputUri.Scheme == PackUriHelper.UriSchemePack && !string.IsNullOrEmpty(inputUri.Fragment)))) { Uri uri = inputUri; if (!inputUri.IsAbsoluteUri) { uri = new Uri(new Uri("http://microsoft.com/"), inputUri); } string fragment = uri.Fragment; int num = (fragment == null) ? 0 : fragment.Length; if (num != 0) { string text = inputUri.ToString(); string uriString = text.Substring(0, text.IndexOf('#')); inputUri = new Uri(uriString, UriKind.RelativeOrAbsolute); if (!inputUri.IsAbsoluteUri) { string startPartUriString = FixedPage.GetStartPartUriString(dependencyObject); if (startPartUriString != null) { inputUri = new Uri(startPartUriString, UriKind.RelativeOrAbsolute); } } } Uri baseUri = BaseUriHelper.GetBaseUri(dependencyObject); Uri uri2 = BindUriHelper.GetUriToNavigate(dependencyObject, baseUri, inputUri); if (num != 0) { StringBuilder stringBuilder = new StringBuilder(uri2.ToString()); stringBuilder.Append(fragment); uri2 = new Uri(stringBuilder.ToString(), UriKind.RelativeOrAbsolute); } return(uri2); } return(null); }