Подтвердить что ты не робот

Установите TextBlock полностью жирным, если DataBound в WPF

У меня есть элемент управления TextBlock с привязкой к базе данных (который используется внутри DataTemplate для отображения элементов в ListBox), и я хочу сделать весь текст в элементе управления полужирным. Кажется, я не могу найти свойство в проводнике свойств, чтобы весь текст был выделен жирным шрифтом, и все, что я могу найти в Интернете, - это использование тега <Bold> внутри TextBlock, но я не могу использовать это как данные поступают непосредственно из источника данных.

Должен быть способ сделать это, но как? Я очень неопытен в WPF, поэтому я не знаю, где искать.

4b9b3361

Ответ 1

Мне что-то не хватает или вам просто нужно установить для свойства FontWeight значение "Bold"?

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

Ответ 2

Вместо того, чтобы просто иметь TextBlock, попробуйте следующее:

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

Затем вместо этого привязайте привязку к Run.TextProperty.

Ответ 3

Вы говорите, что данные поступают непосредственно из источника данных; возможно ли разместить перед ним слой абстракции? Его довольно распространенный способ создать представление для того, что вы показываете, и иметь представление, связывающееся с данными. Наиболее распространенной реализацией этой идеи является Model View View-Model (MVVM). Читайте об этом в Интернете.

У вас может быть свойство DisplayText, связанное с текстовым полем, и это просто "getter", который обертывает основной текст. Он может обнаружить, что текст уже завернут, а если нет, заверните его.

Eg.

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

Затем привяжите к представлению вместо прямого объекта.