2011-10-27 2 views
0

Silverlight 텍스트 블록 또는 RichTextBox에서 텍스트를 강조 표시해야합니다. 난 그냥 RTB의 텍스트 실행에 태그를 추가하는 시도했지만 그들은 단순히 같은 텍스트에 표시 : 그냥 선택 해봤Silverlight에서 텍스트 강조 표시 (배경색 노란색)

Some <Bold>text</Bold> in a RTB 

같은 텍스트 :

myRTB.Selection.Select(textPtr1, textPtr2); 

하지만, 그 은 표준 파란색 - is 색 하이라이트. 나는 배경색을 노란색으로 만들 필요가 있지만 Run의 전경색 만 변경할 수있는 것처럼 보입니다. 왜 저, 그리고 저를위한 어떤 아이디어입니까?

UPDATE :

나는이 같은 실행을 추가하는 값 컨버터 단지 TextBlock을 사용하여 시도했다

:

return String.Format("<Run Foreground=\"Red\">{0}</Run>", value.ToString()); 

여전히 TextBlock을 그냥 태그가 아닌 형식의 텍스트를 보여줍니다.

+0

나는 wrogn 아니에요 경우 : <실행 글꼴 너비 = "굵게"> 텍스트 RTB를이 바인딩되는 텍스트에있는 XML 태그를 추가 – NestorArturo

+0

단지 텍스트에 표시 할 태그를 원인으로 RTB. – Graeme

+0

Silverlight에서 프로그래밍 방식으로 텍스트를 강조 표시하는 솔루션을 찾고 있습니다. 어떤 사람? – Graeme

답변

0

나는 당신이 테두리로 textBlock 포장 및 mouseEntermouseLeave의 테두리 색상을 변경할 수 있습니다 실버 TextBlock의

를 텍스트를 강조 할 필요가있다.

XAML :

<Border x:Name="myTxtBorder" MouseEnter="myTxtBorder_MouseEnter" MouseLeave="myTxtBorder_MouseLeave"> 
     <TextBlock Text="Hover me and yellow you'll see!"/> 
    </Border> 

코드 뒤에이 :

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

그러나 특정 단어 만 강조 표시하면됩니다. 따라서 런타임에이 특정 단어에 대한 경계선을 추가해야합니다. 어떻게해야합니까? – Graeme

+0

@Graeme : 테두리 접근법을 사용하면 강조 표시 할 단어를 별도의 textBlock에 추출하여 테두리로 묶어야합니다. 텍스트가 많으면 많은 컨트롤로 끝나게 될 것이므로 좋은 방법은 아닙니다. 얼마나 많은 텍스트를 처리하고 있습니까? – MichaelS

+0

텍스트 상자는 목록 상자에 있으며 각 텍스트 상자에는 몇백 단어가 포함됩니다. 목록에 20 개의 항목이있을 수 있으며 각각은 강조 표시 할 단어가 두 번 또는 세 번 나오는 항목입니다. – Graeme