2012-09-26 16 views
5

Estoy usando plantillas estándar de Visual Studio y tengo ItemsDetailPage que contiene una FlipView con RichTextBlock en su DataTemplate.Usando RichTextBlock en FlipView en la aplicación Metro Style

Quiero establecer el bloque RichTextBlock a mis Párrafos personalizados generados en texto. Creo que no hay forma de vincular el Bloque RichTextBlocks en XAML, así que estoy usando código detrás. En el evento Loaded de RichTextBlock, configuro su Block, que funciona bien. Pero el problema es que el evento cargado se llama solo una vez cuando se muestra la página. Cuando "volteo" a otro elemento, el elemento seleccionado de FlipView cambia pero el evento Loaded no se vuelve a llamar (creo que esto está bien).

Intenté configurar RichTextBlock en el elemento FlipViews SelectionChanged pero eso no funciona.

var ind = this.flipView.SelectedIndex; 

     var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex); 

     if (flipViewItem != null) 
     {    
      var scroller = FindFirstElementInVisualTree<ScrollViewer>(flipViewItem); 
      var tb = scroller.FindDescendantByName("richTextColumns").FindDescendantByName("richTextBlock") as RichTextBlock; 
      SetRichContent(tb, (flipView.SelectedItem as ArticleViewModel).HtmlContent);    
     } 

El SetRichContent se llama, establece los bloques RichTextBlocks pero visualmente no cambian y después de unos tirones, toda la aplicación se bloquea sin ninguna información adicional.

Así que mi pregunta es, ¿cómo puedo obtener mi propio código llamado en el RichTextBlock con cada volteo (cambio de elemento seleccionado)?

Respuesta

1

Puede enlazar cuadros de texto enriquecido. Asegúrese de que su contexto de datos esté configurado correctamente. Necesitamos ver más código para hacer una respuesta adecuada.

<RichTextColumns> 
    <RichTextColumns.ColumnTemplate> 
     <DataTemplate> 
      <RichTextBlockOverflow Width="400" Margin="50,0,0,0"/> 
     </DataTemplate> 
    </RichTextColumns.ColumnTemplate> 

    <RichTextBlock Width="400"> 
     <Paragraph> 
      <Run Text="{Binding Content}"/> 
     </Paragraph> 
    </RichTextBlock> 
</RichTextColumns> 
+0

Eso vincula el contenido completo a una ejecución como en la plantilla en VS. Necesito vincular varios párrafos y ejecutar –

+0

Intente utilizar múltiples ejecuciones para cada párrafo que necesite. – Dreambeats

+1

la pregunta es cómo acceder al RichTextBlock en el cambio de DataTemplate witch SelectedItem, no cómo agregar Ejecuciones a un RichTextBlock, que es trivial –

Cuestiones relacionadas