繁体   English   中英

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

[英]Set TextBlock to be entirely bold when DataBound in WPF

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

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

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

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

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

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

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

你说数据直接来自数据源; 是否有可能在它前面放置一层抽象? 为您正在显示的内容创建视图并让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而不是直接绑定到对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM