2010-12-16 3 views
2

스 니펫 TextBlock :코드에 상응 내가 내부 부품의 코드에 해당 알고 싶은

<TextBlock> 
    Hello 
    <Run Background="Red">S</Run> 
    <Run Background="Blue">O</Run> 
</TextBlock> 

이유는 내가 TextBox 내용을 반환하는 컨버터를 가지고,하지만 난 아니에요입니다 변환기에서 반환 할 형식을 확인하십시오. 문자열 및 2 Run 인스턴스를 포함하는 일부 컬렉션 형식을 시도했지만 wouldnt 작동합니다.

또한 나는 다음과 같은 작업을 wouldnt 것으로 나타났습니다 :

<TextBlock> 
    <TextBlock.Text> <--- Added this 
     Hello 
     <Run Background="Red">S</Run> 
     <Run Background="Blue">O</Run> 
    </TextBlock.Text> 
</TextBlock> 

그래서 내 두 번째 질문이있는 건물 내 컨버터 결과를 결합해야하는 것입니다?

답변

6

첫 번째로 인라인 속성을 통해 Run 블록을 추가 할 수 있습니다. 이 문자열이 아니라 런의 컬렉션을 기대로

TextBlock txtBlock = new TextBlock(); 

txtBlock.Inlines.Add(new Run { Text = "S", Background = Brushes.Red }); 
txtBlock.Inlines.Add(new Run { Text = "O", Background = Brushes.Blue }); 

둘째, 당신은 "TextBlock.Text"를 통해 추가 할 수 없습니다.

+0

감사를 사용하는 것보다 각 textblocks.I의 결합은보다 유연 생각에 컨버터를 추가! 그래서 나는 텍스트 블록과 텍스트를 전달하는 변환기를 위해 멀티 바인딩이 필요할 것이다. 그럼 난 변환기에서 귀하의 코드를 사용하여 텍스트 블록에 실행을 추가합니다 .Inline – thumbmunkeys

1

이 시도 :

<Label> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Text="Hello"/> 
      <TextBlock Background="Red" Text="S"/> 
      <TextBlock Background="Blue" Text="O"/> 
     </StackPanel> 
    </Label> 

는 실행을

+0

감사 biju. 나는 이미 이것을 고려했지만, 많은 텍스트 블록을 필요로하기 때문에 나에게 적용 할 수 없다. – thumbmunkeys

+0

그러면 itemscontrol을 시도해야한다. – biju