2012-05-05 66 views
0

我有一個用戶控件,其中包含一個帶有自動換行的文本塊。設置在用戶控制多行內的文本塊文本

<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)。 使用代碼後面的「\ r \ n」設置Hintbody屬性可以正常工作。但我想從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

我建議在HintBody的用戶控件中使用ContentPresenter而不是TextBlock。這會給你現在和將來可以做的更大的靈活性。

<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> 
相關問題