2009-02-03 11 views
24

Ich habe ein datengebundenes TextBlock-Steuerelement (das in einer DataTemplate verwendet wird, um Elemente in einer ListBox anzuzeigen), und ich möchte den gesamten Text im Steuerelement fett machen. Ich kann anscheinend keine Eigenschaft im Eigenschaften-Explorer finden, um den ganzen Text fett darzustellen, und alles, was ich online finden kann, ist die Verwendung des Tags <Bold> im TextBlock, aber ich kann das nicht einfügen, da die Daten sind direkt von der Datenquelle kommen.Setzen Sie TextBlock vollständig fett, wenn DataBound in WPF

Es muss einen Weg geben, dies zu tun - aber wie? Ich bin in WPF sehr unerfahren, also weiß ich nicht wirklich wo ich suchen soll.

Antwort

69

Fehle ich etwas oder muss nur die FontWeight-Eigenschaft auf "Bold" gesetzt werden?

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

Danke! Das funktioniert. Das Gleiche funktioniert jedoch nicht mit FontWeight of Italic. Gibt es eine ähnlich einfache Möglichkeit, Kursivschrift zu machen? – robintw

+6

Sicher ist! Schriftstil. Siehe http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.fontstyle.aspx –

0

Sie sagen, dass die Daten direkt von der Datenquelle kommen; Ist es möglich, eine Abstraktionsebene davor zu platzieren? Es ist durchaus üblich, eine Ansicht für das, was Sie anzeigen, zu erstellen und die View mit den Daten zu kommunizieren. Die häufigste Implementierung dieser Idee ist Model View View-Model (MVVM). Lesen Sie online darüber.

Möglicherweise haben Sie eine Eigenschaft "DisplayText", die an das Textfeld gebunden ist, und es ist einfach ein "Getter", der den zugrunde liegenden Text umschließt. Es kann erkennen, ob der Text bereits eingepackt ist, und wenn nicht, wickeln Sie ihn um.

Eg.

Dann binden an die Ansicht statt direkt an das Objekt.

2

Anstatt nur einen Textblock haben, versuchen Sie dies:

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

Dann databind zum Run.TextProperty statt.

+1

Was ist der Vorteil? – nicolas

+0

Während in der ursprünglichen Frage gefragt wurde, wie der gesamte Block fett dargestellt werden soll, ist dies nützlich, wenn bestimmte Teile des Textes fett gedruckt werden sollen - vorausgesetzt, die Elemente sind separate Elemente, an die Sie binden können. –