Markeer tekst in Silverlight (achtergrondkleur geel)

Ik moet tekst markeren in een Silverlight Textblock of RichTextBox. Ik heb geprobeerd om gewoon tags aan de tekstrun van de RTB toe te voegen, maar ze verschijnen gewoon in de tekst, zoals:

Some text in a RTB

Ik heb geprobeerd de tekst zo te selecteren:

myRTB.Selection.Select(textPtr1, textPtr2);

maar dat markeert in de standaard blauwachtige kleur . Ik moet de achtergrondkleur geel maken, maar het lijkt erop dat ik alleen de voorgrondkleur van een run kan wijzigen. Waarom is dat en welke ideeën voor mij?

BIJWERKEN:

Ik heb geprobeerd alleen een TextBlock te gebruiken met een value converter die een run als volgt toevoegt:

return String.Format("{0}", value.ToString());

maar toch toont het TextBlock alleen de tags, niet de opgemaakte tekst.

0
Als ik niet wrogn ben: uw tekst
toegevoegd de auteur NestorArturo, de bron
Sorry dat ik zo laat ben ... Als u tekst in code toevoegt, kunt u deze "Uitvoeren" toevoegen aan de eigenschap "Inlines" voor het Textblock.
toegevoegd de auteur NestorArturo, de bron
Het toevoegen van xml-tags aan de tekst waarvan de RTB verplicht is, zorgt ervoor dat de tags in de RTB-tekst worden weergegeven.
toegevoegd de auteur Graeme, de bron
Nog steeds op zoek naar een oplossing om tekst programmatisch in Silverlight te accentueren. Elke takers?
toegevoegd de auteur Graeme, de bron
Ik heb geprobeerd een run toe te voegen via de bindomvormer - zie hierboven. Dat werkt echter niet - de tags laten het gewoon letterlijk zien. Ik zal naar het InLines-eigendom kijken.
toegevoegd de auteur Graeme, de bron

2 antwoord

Ik moet tekst markeren in een Silverlight-tekstblok

U kunt uw textBlock omwikkelen met een rand en de randkleur wijzigen in mouseEnter en mouseLeave .

XAML:

 
        
  

Code achter:

Private Sub myTxtBorder_MouseEnter(sender As System.Object, e As System.Windows.Input.MouseEventArgs)
        myTxtBorder.Background = New SolidColorBrush(Colors.Yellow)
    End Sub

    Private Sub myTxtBorder_MouseLeave(sender As System.Object, e As System.Windows.Input.MouseEventArgs)
        myTxtBorder.Background = New SolidColorBrush(Colors.White)
    End Sub
0
toegevoegd
Ik hoef echter alleen bepaalde woorden te markeren, dus ik zou tijdens runtime de grens moeten toevoegen aan deze specifieke woorden. Hoe kan ik dat doen?
toegevoegd de auteur Graeme, de bron
Het tekstblok bevindt zich in een keuzelijst en elke tekst bevat een paar honderd woorden. Mogelijk 20 items in de lijst, elk met 2 of 3 exemplaren van het woord om te hightlighten.
toegevoegd de auteur Graeme, de bron
@Graeme: met de grensbenadering moet u de woorden die u wilt markeren uitpakken in een afzonderlijk tekstblok en deze omhullen met rand. Als je veel tekst hebt, krijg je veel besturingselementen, wat geen goede zaak is. Hoeveel tekst verwerkt u?
toegevoegd de auteur MichaelS, de bron

De Liquid.RichTextBox kan u misschien helpen.

http://vectorlight.net/silverlight/controls/rich_textbox.aspx

0
toegevoegd