2012-09-26 11 views
5

Utilizzo i modelli di Visual Studio standard e ho una ItemsDetailPage che contiene un FlipView con un RichTextBlock nel DataTemplate.Utilizzo di RichTextBlock in FlipView nell'app Metro Style

Desidero impostare il blocco RichTextBlock sui miei paragrafi personalizzati generati nel testo. Penso che non ci sia modo di legare RichTextBlocks Block in XAML, quindi sto usando il codice dietro. Nell'evento Loaded di RichTextBlock ho impostato il suo Block, che funziona bene. Ma il problema è che l'evento Loaded viene chiamato una sola volta quando viene visualizzata la pagina. Quando faccio "capovolgere" su un altro oggetto, l'elemento selezionato di FlipView cambia ma l'evento Loaded non viene richiamato di nuovo (penso che sia ok).

Ho provato a impostare RichTextBlock nell'elemento FlipViews SelectionChanged ma non funziona.

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);    
     } 

Il SetRichContent viene chiamato, imposta i blocchi RichTextBlocks ma visivamente non cambiano e, dopo un paio di salti mortali, tutto l'app si blocca senza ulteriori informazioni.

Quindi la mia domanda è: come faccio a ottenere il mio codice chiamato RichTextBlock con ogni flip (cambio di elemento selezionato)?

risposta

1

È possibile associare caselle di testo avanzato. Assicurati che il contesto dei tuoi dati sia impostato correttamente. Abbiamo bisogno di vedere più codice per dare una risposta appropriata.

<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

Ciò significa vincolare l'intero contenuto a una corsa come nel modello in VS. Ho bisogno di legare più paragrafi e corre –

+0

Prova a utilizzare più esecuzioni per ogni paragrafo di cui hai bisogno. – Dreambeats

+1

la domanda è come accedere al RichTextBlock nella modifica di SelectedItem della strega DataTemplate, non come aggiungere Run ad un RichTextBlock, che è banale –

Problemi correlati