コード例 #1
0
        // 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);
                        }
                    }
                }
            }
        }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }
コード例 #3
0
        // 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);
        }