2012-05-05 4 views
0

У меня есть пользовательский элемент управления, который содержит текстовый блок со словом wrap.Установить текст текстового блока, который находится внутри пользовательского управления multiline

<UserControl> 
    <StackPanel> 
    <TextBlock MaxWidth="500" 
       Margin="2" 
       Text="{Binding HintHeader}" 
       TextWrapping="Wrap" /> 

    <TextBlock MaxWidth="500" 
       Margin="2" 
       Text="{Binding HintBody}" 
       TextWrapping="Wrap" /> 
    </StackPanel> 
</UserControl> 

Hintbody - это свойство зависимостей пользовательского контроля. Я могу использовать элемент управления в другом месте, как:

<cntrls:HintButton x:Name="hint" 
        Width="24" 
        Height="24" 
        Margin="85,68,0,0" 
        HintHeader="This is an header" 
        HintBody="This is an hint"/> 

Все работает нормально. Но я хочу установить многострочный текст в текстовый блок (HintBody). Настройка свойства Hintbody с использованием «\ r \ n» из кода работает отлично. Но я хочу установить то же самое из XAML. Что-то вроде.

<cntrls:HintButton x:Name="hint" 
         Width="24" 
         Height="24" 
         Margin="85,68,0,0" 
         HintHeader="Hint Header" > 
     <cntrls:HintButton.HintBody> 
     This is a multiline hint body. 
     <LineBreak /> 
     This is a multiline hint body. 
     </cntrls:HintButton.HintBody>  
    </cntrls:HintButton> 

ответ

0

Я бы рекомендовал использовать ContentPresenter вместо TextBlock внутри пользовательского элемента управления для HintBody. Это даст вам большую гибкость в том, что вы можете делать сейчас и в будущем.

<UserControl> 
    <StackPanel> 
    <TextBlock MaxWidth="500" 
      Margin="2" 
      Text="{Binding HintHeader}" 
      TextWrapping="Wrap" /> 

    <ContentPresenter MaxWidth="500" 
      Margin="2" 
      Text="{Binding HintBody}" 
      TextWrapping="Wrap" /> 
    </StackPanel> 
</UserControl> 

Вам нужно будет изменить тип свойства HintBody как объекта. Тогда вы можете сделать:

<cntrls:HintButton x:Name="hint" 
        Width="24" 
        Height="24" 
        Margin="85,68,0,0" 
        HintHeader="Hint Header" > 
    <cntrls:HintButton.HintBody> 
    <TextBlock> 
     <Run Text="This is a line."/> 
     <LineBreak/> 
     <Run Text="This is another line"/> 
    </TextBlock>  
    </cntrls:HintButton.HintBody> 
</cntrls:HintButton> 
Смежные вопросы