我有一个用户控件,其中包含带有自动换行的文本块。
<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 :(得分: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属性的类型更改为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>