在WPF中的DataBound时将TextBlock设置为完全粗体

时间:2009-02-03 09:45:01

标签: c# .net wpf xaml textblock

我有一个数据绑定TextBlock控件(在DataTemplate中使用它来显示ListBox中的项目),我想让控件中的所有文本都变为粗体。我似乎无法在属性资源管理器中找到一个属性来将整个文本设置为粗体,我在网上找到的只是在TextBlock中使用<Bold>标签,但我不能把它放在因为数据直接来自数据源。

必须有办法做到这一点 - 但如何?我对WPF非常缺乏经验,所以我真的不知道在哪里看。

3 个答案:

答案 0 :(得分:72)

我错过了什么,或者你只需​​要将FontWeight属性设置为“Bold”?

<TextBlock FontWeight="Bold" Text="{Binding Foo}" />

答案 1 :(得分:2)

不要只是拥有一个TextBlock,试试这个:

<TextBlock>
  <Bold>
    <Run />
  </Bold>
</TextBlock>

然后将数据绑定到Run.TextProperty。

答案 2 :(得分:0)

你说数据直接来自数据源;是否有可能在它前面放置一层抽象?为您正在显示的内容创建视图并让View与数据通信非常常见。这种想法最常见的实现是模型视图视图模型(MVVM)。在线阅读一下。

你可能有一个绑定到文本框的'DisplayText'属性,它只是一个包含底层文本的'getter'。它可以检测文本是否已经被包装,如果没有,请将其包装。

例如

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;
     }
   }
}

然后,绑定到View而不是直接绑定到对象。