hacer clic en enlace dentro de un control de texto como el control de texto enriquecido en WPF?

StackOverflow https://stackoverflow.com/questions/4309489

Pregunta

Quiero ser capaz de tener un poco de hacer clic en el texto como en las páginas web en WPF. El control debe tener tanto texto no funcional (por pantalla) tanto también algunas de sus partes como completamente puede hacer clic.

decir como Wikipedia.

Sin embargo, esta es una aplicación independiente autónomo fuera de línea.

He intentado varias cosas pero no podía hacerlo, especialmente el clic no funcionan como páginas web, es decir, 1 clic para abrir la URL contenida dentro de las herramientas.

¿Fue útil?

Solución

Si usted no tiene un requisito de que sea un FlowDocument en toda regla, a continuación, puedes utilizar un viejo y simple WPF TextBlock, y poner hipervínculos en ella.

<TextBlock>
    Here's some text with a
    <Hyperlink NavigateUri="Page2.xaml">link to another XAML page</Hyperlink>
    and a
    <Hyperlink NavigateUri="http://msdn.microsoft.com/">link to the
    Web</Hyperlink>.
</TextBlock>

Si es necesario el desplazamiento, sólo hay que poner un ScrollViewer alrededor de ella.

Si necesita el paginado, visor de varias columnas, entonces usted tendrá que ir con un total contra FlowDocument, pero si lo que quieres es texto con hipervínculos, TextBlock + hipervínculo debe ser todo lo que necesita.

Otros consejos

usted debe tratar de ajustar el flujo de documentos de forma manual y la creación de hipervínculos en el documento de flujo ...

Aquí es un texto tomado del siguiente enlace: http: //social.msdn .microsoft.com / Foros / en-US / wpf / hilo / 99ae9d9c-1dd4-4acd-8d5d-6eb739adeb98

" Hola,

Es posible. He aquí un pequeño ejemplo de cómo crear hipervínculo con el párrafo / sección / mesa.

Con el fin de navegar a la página web, podemos crear una trama de control para la navegación. La relación jerárquica de elementos en este ejemplo es como sigue:

Marco -> FlowDocument -> Tabla -> Sección -> Párrafo -> hipervínculo

En el código subyacente:

public Window1()
        {
            InitializeComponent();

            // add a Frame for navigation
            Frame frame = new Frame();
            this.Content = frame;
            //add FlowDocument
            FlowDocument doc = new FlowDocument();
            frame.Navigate(doc);

            //add Table
            Table table = new Table();
            doc.Blocks.Add(table );
            TableRowGroup group = new TableRowGroup();
            table.RowGroups.Add(group );

            TableColumn col1 = new TableColumn();
            TableColumn col2 = new TableColumn();
            table.Columns.Add(col1 );
            table.Columns.Add(col2);

            TableRow row1 = new TableRow();
            TableCell cel1 = new TableCell();
            row1.Cells.Add(cel1);

            group.Rows.Add(row1);

            //add Section
            Section mySection = new Section();
            //add section to the Table cell.
            cel1.Blocks.Add(mySection);

            Paragraph paraValue = new Paragraph();
            Hyperlink hl = new Hyperlink(new Run("Click Here to Google"));
            hl.Foreground = Brushes.Red;
            paraValue.Inlines.Add(hl);

            hl.FontSize = 11;
            hl .NavigateUri =new Uri ("Http://www.google.cn");

            mySection.Blocks.Add(paraValue);
        }

Si usted tiene alguna pregunta sobre esto, por favor no dude en preguntar.

Gracias. "

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top