28

データバインドされた TextBlock コントロール (DataTemplate 内で ListBox に項目を表示するために使用されています) があり、コントロール内のすべてのテキストを太字にしたいと考えています。プロパティ エクスプローラーでテキスト全体を太字に設定するプロパティが見つからないようです。オンラインで見つけることができるの<Bold>は TextBlock 内のタグの使用だけですが、データが来ているのでそれを入れることはできませんデータ ソースから直接。

これを行う方法があるはずですが、どのように?私はWPFに非常に慣れていないため、どこを見ればよいかわかりません。

4

3 に答える 3

78

何か不足していますか、それとも FontWeight プロパティを "Bold" に設定する必要がありますか?

<TextBlock FontWeight="Bold" Text="{Binding Foo}" />
于 2009-02-03T10:24:27.247 に答える
2

TextBlock を使用するだけでなく、次のことを試してください。

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

次に、代わりに Run.TextProperty にデータバインドします。

于 2009-02-03T10:20:17.037 に答える
0

データはデータソースから直接来ていると言います。その前に抽象化のレイヤーを配置することは可能ですか? 表示しているもののビューを作成し、ビューにデータと通信させることは非常に一般的です。このアイデアの最も一般的な実装は、Model View View-Model (MVVM) です。それについてオンラインで読んでください。

テキストボックスにバインドされた「DisplayText」プロパティがある場合があります。これは、基になるテキストをラップする単なる「ゲッター」です。テキストが既に折り返されているかどうかを検出し、折り返されていない場合は折り返すことができます。

例えば。

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

次に、オブジェクトに直接バインドするのではなく、ビューにバインドします。

于 2009-02-03T10:05:47.580 に答える