我有一个自定义控件,它有一个字符串Description dependancy属性,如下所示:
<CustomControl>
<CustomControl.Description>
Hello World
</CustomControl.Description>
</CustomControl>
此描述绑定在TextBlock中的几个位置,如下所示:
<Button>
<Button.ToolTip>
<TextBlock Text="{Binding Path=Description}"/>
</Button.ToolTip>
<TextBlock Text="{Binding Path=Description}"/>
</Button>
如何在文本块中添加新行和粗体格式?我试过了:
\r\n
,但这不会被选中。

或

,但未提及此内容。<![CDATA[<LineBreak/>]]>
,但这不会被选中。答案 0 :(得分:1)
您可以将Description
类型从简单的string
更改为object
,从而允许容器将其设置为任意内容,富文本,图片等。
相同的框架元素不能是两个元素的逻辑子元素,因此您不能同时将它用作按钮和工具提示的内容。
示例:
<CustomControl>
<CustomControl.Description>
<WrapPanel>
<TextBlock Text="Hello " Foreground="Red"/>
<TextBlock Text="World!" Foreground="Blue"/>
</WrapPanel>
</CustomControl.Description>
</CustomControl>
模板:
<Button>
<Button.ToolTip>
<ContentPresenter Content="{TemplateBinding SomeOtherProperty}"/>
</Button.ToolTip>
<ContentPresenter Content="{TemplateBinding Description}"/>
</Button>
答案 1 :(得分:0)
描述的类型应该是DataTemplate:
<DataTemplate>
<TextBlock>
<Run>Hello</Run>
<LineBreak/>
<Run>World</Run>
</TextBlock>
</DataTemplate>
然后,您可以使用标签并将模板分配给每个标签。
<Label FontSize="24" ContentTemplate="{Binding Inlines}"/>
<Label FontSize="10" ContentTemplate="{Binding Inlines}"/>
答案 2 :(得分:0)
如果您的ToolTip
文本(例如)不是您在设计时可以知道的,但必须在运行时构建代码隐藏,那么您可以这样做:
TextBlock tb = new TextBlock();
tb.Inlines.Add(new Run("Background indicates packet repeat status:"));
tb.Inlines.Add(new LineBreak());
tb.Inlines.Add(new LineBreak());
Run r = new Run("White");
r.Background = Brushes.White;
tb.Inlines.Add(r);
tb.Inlines.Add(new Run("\t= Identical Packet received at this time."));
tb.Inlines.Add(new LineBreak());
r = new Run("SkyBlue");
r.Background = new SolidColorBrush(Colors.SkyBlue);
tb.Inlines.Add(r);
tb.Inlines.Add(new Run("\t= Original Packet received at this time."));
ToolTip tt = new ToolTip();
tt.Content = tb;
myButton.ToolTip = tt;
此示例提供了格式精美的4行工具提示文本,带有颜色突出显示。
我没有使用Brushes.SkyBlue
的唯一原因是证明你可以构建你想要的任何颜色。例如,new SolidColorBrush(Color.FromArgb(128, 86, 180, 233));
用于半透明的SkyBlue背景。
选择颜色时,请记住您的色盲用户:Color Blind Palette