我有一个数据绑定的 TextBlock 控件(它被用在 DataTemplate 中作为 ListBox 中显示项的控件),我想把控件内所有文本都变成粗体。但是我在属性资源管理器中找不到设置整个文本为粗体的属性,而且我在网上找到的所有信息都是使用 <Bold>
标签来实现这个功能,但是由于数据直接来自数据源,所以我无法添加标签。
一定有办法可以做到这个 - 但是怎么做呢?由于我在 WPF 上很没有经验,所以我不知道该从哪里入手。
我是否遗漏了一些东西,或者你只需要将 FontWeight 属性设置为 "Bold"?
<TextBlock FontWeight="Bold" Text="{Binding Foo}" />
不要只使用TextBlock,试试这个:
<TextBlock>
<Bold>
<Run />
</Bold>
</TextBlock>
您说数据直接来自数据源;是否可以在它前面加上一层抽象层?通常会为您要显示的内容创建一个视图,并将该视图与数据进行通信。这个想法的最常见实现是模型-视图-视图模型(MVVM)。请在线上阅读相关资料。
您可能有一个“DisplayText”属性,它绑定到文本框,只是一个包装基础文本的“getter”。它可以检测文本是否已经包装在 <p> 标签中,如果没有,则包装。
例如:
public class TestView {
private Test datasource;
public TestView(Test source)
{
this.datasource = source;
}
public string DisplayText {
get {
if (datasource.Text.Contains("<bold>")==false) {
return "<bold>" + datasource.Text + "</bold>";
}
return datasource.Text;
}
}
}
然后,绑定到视图而不是直接绑定到对象。