2010-02-15 4 views
2

Je travaille avec Silverlight 4 et j'essaie de mettre mes applications de test en multilingue, mais j'ai des problèmes lorsque j'arrive au contrôle "RichTextBox". Je suis capable de lier correctement en faisant back-code (C#), mais en essayant d'utiliser les attributs "DataContext" je ne suis pas capable de le charger du tout.Silverlight 4 RichTextBox Lier des données à l'aide de DataContext

J'ai créé un FormatConverter qui retourne un bloc (paragraphe) pour tester et mon code où j'ai mon RichTextBox ressemble:

<RichTextBox x:Name="rtaTest" BorderThickness="0" IsReadOnly="True" UseLayoutRounding="True" 
DataContext="{Binding Source={StaticResource Localization}, Path=Home.MainContent, Converter={StaticResource ParagraphFormatConverter}}"> 
    </RichTextBox> 

Je me demande s'il y a un moyen de lier un RichTextBox de la XAML.

+0

Je vois pas tout à fait ce que votre objectif est d'attribuer à la DataContext – AnthonyWJones

+0

Il est parce que je veux mettre dans mon texte riche région différente localisation (français/anglais/etc.) mais je veux lier mes blocs lorsque je charge la page. Désolé si je ne suis pas clair ... mon anglais n'est pas ma langue maternelle. – Nordes

Répondre

1

Je pense que vous pouvez être un peu confus au sujet de l'employé de la DataContext. Vous pouvez par exemple avoir du texte enrichi dans lequel certains enfants d'un ou plusieurs éléments InlineUIContainer peuvent récupérer leur texte à partir d'une propriété d'un objet. Vous affectez l'objet au DataContext. Alors que je ne suis pas sûr de ce que vous espériez atteindre, mais je soupçonne que ce que vous avez vraiment besoin est pour votre convertisseur de renvoyer un BlocksCollection (même si il contient seulement le Block vous revenez d'abord), puis pour lier comme: -

<RichTextArea x:Name="rtaTest" BorderThickness="0" IsReadOnly="True" 
UseLayoutRounding="True" 
Blocks="{Binding Source={StaticResource Localization}, 
    Path=Home.MainContent, Converter={StaticResource ParagraphFormatConverter}}" /> 
0

Les blocs ne peuvent pas être définis, ils peuvent uniquement être récupérés. Une façon de définir les blocs pour une est

public static void UpdateRichTextArea(RichTextArea area, string xmlText) 
{ 
    if (area == null) 
    return; 

    area.Blocks.FillFromXml(xmlText, true); 
} 
1

Ce FillFromXml est une chose WPF? Ne le vois pas dans Silverlight.

5

Run semble soutenir dans databinding SL4, comme dans:

<RichTextBox> 
    <Paragraph> 
    <Run Text="{Binding Path=LineFormatted}" /> 
    </Paragraph> 
</RichTextBox> 
+0

Incroyable, tu as fait ma journée;) –

Questions connexes