2012-05-05 11 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> 

ヒントは、ユーザーコントロールの依存プロパティです。私は別の場所で細かいコントロールを使用することができます:

<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のユーザーコントロール内でTextBlockの代わりにContentPresenterを使用することをおすすめします。それはあなたが今や将来できることに大きな柔軟性を与えるでしょう。

<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プロパティのタイプをobjectに変更する必要があります。次に、あなたはできます:

<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> 
関連する問題